pyc-website
main website for pyc inc.
git clone https://9o.is/git/pyc-website.git
commit e649439382e0e041b3f9b0e84de563c8804d6c72 parent 0a691a143a8662fa10d92c31d1d18ceb309cda26 Author: Jul <jul@9o.is> Date: Wed, 3 Sep 2014 00:13:37 -0400 Chimera can now create user account with website api Diffstat:
| M | src/main/scala/inc/pyc/rest/AtmRest.scala | | | 45 | ++++++++++++++++++++++++++++++++++++++++++++- |
1 file changed, 44 insertions(+), 1 deletion(-)
diff --git a/src/main/scala/inc/pyc/rest/AtmRest.scala b/src/main/scala/inc/pyc/rest/AtmRest.scala @@ -2,6 +2,7 @@ package inc.pyc package rest import model._ +import field._ import net.liftweb._ import common._ import http._ @@ -38,6 +39,48 @@ object AtmRest extends RestHelper { case id :: pw :: "phone" :: phoneNumber :: "login" :: Nil JsonGet _ => authenticate(id, pw, User findByPhone (phoneNumber) map sendUserInfo openOr failure("User not found")) + + + // /api/atm/{atm_id}/{atm_password}/create_user + // - phone and email is required. + // - ID will be uploaded if any files are in the buffer. + case id :: pw :: "create_user" :: Nil Post req => + + import IdVerificationHelper._ + + val user = User.createRecord. + email(req param "email" openOr "invalid"). + phone(req param "phone" openOr "invalid"). + purchaseLimit(USAPurchaseLimit.D3k). + username(Helpers.randomString(20)). + password(Helpers.randomString(20)) + + user.password.hashIt + + def uploadID: Boolean = { + IdVerificationFiles(req.uploadedFiles) + val service = s3(createS3Folder(user)) + upload(service) + } + + user.validate match { + case Nil => + user.save() + + if(uploadID) { + user.purchaseLimit(USAPurchaseLimit.D10k_?) + user.update + notifyIdentityRequest(user) + success() + } else { + User.sendLoginToken(user) + failure("Failed to upload ID") ~ ("sentLoginToken" -> true) + } + + case errors => + failure("Invalid submission: "+ + errors.map(_.msg).mkString(", ")) + } }) def authenticate(id: String, passwd: String, f: JValue) = @@ -63,7 +106,7 @@ object AtmRest extends RestHelper { ("purchaseLimit" -> user.userLimitAsInt)) } - def success(data: JValue) = response(true, data = data) + def success(data: JValue = JNull) = response(true, data = data) def failure(reason: String) = response(false, reason = reason) def response(success: Boolean, data: JValue = JNull, reason: String = "") =