Example #1
0
    def POST(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        try:
            email = jrequest.getValue("email")[0]
            raw_password = jrequest.getValue("password")[0]
        except Exception:
            raise InvalidParams(
                "email and password are required for method=login.")
        try:
            email_user = EmailUser.getByEmail(email)
        except Exception:
            raise EntityNotFound("EmailUser entity is not found",
                                 {"email": email})
        assert isinstance(email_user, EmailUser)
        email_user.matchPassword(
            raw_password)  # raises PasswordMismatch if password not matches
        #        email_user.saveToSession()

        assert email_user.odenkiId is not None
        odenki_user = OdenkiUser.getByOdenkiId(email_user.odenkiId)
        odenki_user.saveToSession()
        EmailUser.deleteFromSession()

        jresponse.setResultValue("EmailUser", email_user)
        jresponse.setResultValue("OdenkiUser", odenki_user)
Example #2
0
    def POST(self, jrequest, jresponse):
        """generate a nonce with given password and send the corresponding URL to the user.
        This round trip is intended to associate a password to an email address.
        """
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        try:
            email = unicode(jrequest.getValue("email")[0])
            raw_password = jrequest.getValue("password")[0].decode()
            raw_password2 = jrequest.getValue("password2")[0].decode()
        except TypeError:
            raise InvalidParams(
                message="email, password and password2 were mandatory.")

        if len(raw_password) < 8:
            raise InvalidParams(
                message="password should be eight characters or more")
        if raw_password != raw_password2:
            raise PasswordMismatch()
        match = re.search(r'^[\w.-\\\\+]+@[\w.-]+$', email)
        if not match:
            raise InvalidParams({"email": email},
                                "Malformed email '%s' address was given." %
                                email)

        #email_user = None
        # check if OdenkiUser is loaded


#        try:
#            odenki_user = OdenkiUser.loadFromSession()
#            email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
#        except EntityNotFound: pass

# check if EmailUser already exists.

        try:
            email_user = EmailUser.getByEmail(email)
        except EntityNotFound:
            email_user = EmailUser.createByEmail(email)
        assert isinstance(email_user, EmailUser)
        email_user.setNonce(email, raw_password)
        #EmailUser.deleteFromSession()

        from google.appengine.api import mail
        message = mail.EmailMessage()
        message.to = email
        message.body = "「みんなでおでんき」に関心をお持ちいただきありがとうございます。\n" + \
            ("このメールアドレス %s" % email) + " でご登録いただくには次のページを開いて下さい。 \n " + \
            ("http://%s/api/auth/Email/%s" % (jrequest.request.host, email_user.nonce)) + "\n" + \
            "みんなでおでんきに登録しない場合はこのメールを無視して下さい。\n"
        message.sender = "*****@*****.**"
        message.subject = "みんなでおでんきへの登録確認メール"
        message.send()
        jresponse.setResultValue("EmailUser", email_user)
        jresponse.setResultValue("email", email)
Example #3
0
def fillEmailUser():
    odenki_user = OdenkiUser.loadFromSession()
    assert isinstance(odenki_user, OdenkiUser)
    try:
        email_user = EmailUser.loadFromSession()
    except EntityNotFound:
        email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
    assert isinstance(email_user, EmailUser)

    if email_user.odenkiId is None:
        email_user.odenkiId = odenki_user.odenkiId
        email_user.put()  # put EmailUser if odenkiId is updated
    email_user.saveToSession()
def fillEmailUser():
    odenki_user = OdenkiUser.loadFromSession()
    assert isinstance(odenki_user, OdenkiUser)
    try:
        email_user = EmailUser.loadFromSession()
    except EntityNotFound: 
        email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
    assert isinstance(email_user, EmailUser)

    if email_user.odenkiId is None:
        email_user.odenkiId = odenki_user.odenkiId
        email_user.put() # put EmailUser if odenkiId is updated
    email_user.saveToSession()
Example #5
0
    def POST(self, jrequest, jresponse):
        """generate a nonce with given password and send the corresponding URL to the user.
        This round trip is intended to associate a password to an email address.
        """
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        try:
            email = unicode(jrequest.getValue("email")[0])
            raw_password = jrequest.getValue("password")[0].decode()
            raw_password2 = jrequest.getValue("password2")[0].decode()
        except TypeError:
            raise InvalidParams(message="email, password and password2 were mandatory.")
        
        if len(raw_password) < 8:
            raise InvalidParams(message="password should be eight characters or more")
        if raw_password != raw_password2:
            raise PasswordMismatch()
        match = re.search(r'^[\w.-\\\\+]+@[\w.-]+$', email)
        if not match:
            raise InvalidParams({"email": email}, "Malformed email '%s' address was given." % email)
        
        #email_user = None
        # check if OdenkiUser is loaded 
#        try: 
#            odenki_user = OdenkiUser.loadFromSession()
#            email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
#        except EntityNotFound: pass 

        # check if EmailUser already exists.

        try: 
            email_user = EmailUser.getByEmail(email)
        except EntityNotFound:
            email_user = EmailUser.createByEmail(email)
        assert isinstance(email_user, EmailUser)
        email_user.setNonce(email, raw_password)
        #EmailUser.deleteFromSession()
        
        from google.appengine.api import mail
        message = mail.EmailMessage()
        message.to = email
        message.body = "「みんなでおでんき」に関心をお持ちいただきありがとうございます。\n" + \
            ("このメールアドレス %s" % email) + " でご登録いただくには次のページを開いて下さい。 \n " + \
            ("http://%s/api/auth/Email/%s" % (jrequest.request.host, email_user.nonce)) + "\n" + \
            "みんなでおでんきに登録しない場合はこのメールを無視して下さい。\n"
        message.sender = "*****@*****.**"
        message.subject = "みんなでおでんきへの登録確認メール"
        message.send()
        jresponse.setResultValue("EmailUser", email_user)
        jresponse.setResultValue("email", email)
 def GET(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     
     try:
         odenki_user = OdenkiUser.loadFromSession()
         assert isinstance(odenki_user, OdenkiUser)
     except: odenki_user = None
     
     try:
         email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
         assert isinstance(email_user, EmailUser)
     except: email_user = None
     
     try:
         twitter_user = TwitterUser.getByOdenkiId(odenki_user.odenkiId)
         assert isinstance(twitter_user, TwitterUser)
     except: twitter_user = None
     
     try:
         gmail_user = GmailUser.getByOdenkiId(odenki_user.odenkiId)
         assert isinstance(gmail_user, GmailUser)
     except: gmail_user = None
     
     jresponse.setResultValue(odenki_user.__class__.__name__, odenki_user)
     jresponse.setResultObject(email_user)
     jresponse.setResultObject(twitter_user)
     jresponse.setResultObject(gmail_user)
     login_url = users.create_login_url("/api/auth/Gmail/RedirectedFromGoogle")
     jresponse.setResultValue("login_url", login_url)
Example #7
0
 def setPassword(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     #        try:
     #            session = gaesessions.get_current_session()
     #            nonce = session[EMAIL_REGISTRATION_NONCE]
     #        except Exception, e:
     #            session.pop(EMAIL_REGISTRATION_NONCE);
     #            raise UnexpectedState("Nonce is not stored in session data.")
     #        assert isinstance(nonce, unicode)
     #        email_user = EmailUser.getByNonce(nonce)
     try:
         odenki_user = OdenkiUser.loadFromSession()
     except EntityNotFound:
         odenki_user = None
     email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
     assert isinstance(email_user, EmailUser)
     try:
         raw_password = jrequest.getValue("password")[0].decode()
         raw_password2 = jrequest.getValue("password2")[0].decode()
         assert len(raw_password) < 8
     except Exception, e:
         raise InvalidParams(
             "setPassword method requires password and password2. %s" % e)
Example #8
0
 def deleteEmailUser(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     odenki_user = OdenkiUser.loadFromSession()
     assert isinstance(odenki_user, OdenkiUser)
     email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
     email_user.key.delete_async()
Example #9
0
 def deleteEmailUser(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     odenki_user = OdenkiUser.loadFromSession()
     assert isinstance(odenki_user, OdenkiUser)
     email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
     email_user.key.delete_async()
Example #10
0
 def invalidate(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     odenki_user = OdenkiUser.loadFromSession()
     assert isinstance(odenki_user, OdenkiUser)
     email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
     assert isinstance(email_user, EmailUser)
     email_user.invalidate()
Example #11
0
 def invalidate(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     odenki_user = OdenkiUser.loadFromSession()
     assert isinstance(odenki_user, OdenkiUser)
     email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
     assert isinstance(email_user, EmailUser)
     email_user.invalidate()
Example #12
0
    def GET(self, jrequest, jresponse):
        """load EmailUser instance by nonce.
        Nonce will be invalidated and email will be updated."""
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        #EmailUser.deleteFromSession()
        nonce = unicode(jrequest.getPathInfo(4))
        email_user = EmailUser.getByNonce(nonce)
        assert isinstance(email_user, EmailUser)
        assert email_user.nonceEmail is not None
        email_user.email = email_user.nonceEmail
        email_user.nonceEmail = None
        email_user.hashedPassword = email_user.nonceHashedPassword
        email_user.nonceHashedPassword = None
        email_user.nonce = None
        email_user.put_async()
        #email_user.saveToSession()

        # prepare OdenkiUser
        try:
            odenki_user = OdenkiUser.loadFromSession()
        except EntityNotFound:
            odenki_user = None

        # reconcile EmailUser and OdenkiUser
        if odenki_user is None:
            if email_user.odenkiId is None:
                odenki_user = OdenkiUser.createNew()
                assert isinstance(odenki_user, OdenkiUser)
                odenki_user.saveToSession()
                email_user.setOdenkiId(odenki_user.odenkiId)
                email_user.put_async()
            else:
                odenki_user = OdenkiUser.getByOdenkiId(email_user.odenkiId)
                odenki_user.saveToSession()
        else:
            if email_user.odenkiId is None:
                odenki_user.saveToSession()
                email_user.setOdenkiId(odenki_user.odenkiId)
                email_user.put_async()
            else:
                if email_user.odenkiId != odenki_user.odenkiId:
                    raise InconsistentAuthentiation({
                        email_user.__class__.__name__:
                        email_user,
                        odenki_user.__class__.__name__:
                        odenki_user
                    })
                odenki_user.saveToSession()

        jresponse.setResultValue(odenki_user.__class__.__name__, odenki_user)
        jresponse.setResultValue(email_user.__class__.__name__, email_user)
        #jresponse.setResultValue("nonce", nonce)
        jresponse.setRedirectTarget("http://%s/html/settings.html" %
                                    jrequest.request.host)
Example #13
0
 def showAllEmailUsers(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     assert jrequest.fromAdminHost
     jresponse.setId()
     query = EmailUser.query()
     email_users = []
     for email_user in query:
         email_users.append(email_user)
     jresponse.setResult(email_users)
Example #14
0
 def showAllEmailUsers(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     assert jrequest.fromAdminHost
     jresponse.setId()
     query = EmailUser.query()
     email_users = []
     for email_user in query:
         email_users.append(email_user)
     jresponse.setResult(email_users)
Example #15
0
def fillOdenkiUserByEmailUser():
    try:
        odenki_user = OdenkiUser.loadFromSession()
        assert isinstance(odenki_user, OdenkiUser)
        return
    except EntityNotFound:
        email_user = EmailUser.loadFromSession()
        assert isinstance(email_user, EmailUser)
        odenki_user = OdenkiUser.getByOdenkiId(email_user.odenkiId)
        assert isinstance(odenki_user, OdenkiUser)
        odenki_user.saveToSession()
Example #16
0
def fillOdenkiUserByEmailUser():
    try:
        odenki_user = OdenkiUser.loadFromSession()
        assert isinstance(odenki_user, OdenkiUser)
        return
    except EntityNotFound:
        email_user = EmailUser.loadFromSession()
        assert isinstance(email_user, EmailUser)
        odenki_user = OdenkiUser.getByOdenkiId(email_user.odenkiId)
        assert isinstance(odenki_user, OdenkiUser)
        odenki_user.saveToSession()
Example #17
0
 def GET(self, jrequest, jresponse):
     """load EmailUser instance by nonce.
     Nonce will be invalidated and email will be updated."""
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     #EmailUser.deleteFromSession()
     nonce = unicode(jrequest.getPathInfo(4))
     email_user = EmailUser.getByNonce(nonce)
     assert isinstance(email_user, EmailUser)
     assert email_user.nonceEmail is not None
     email_user.email = email_user.nonceEmail
     email_user.nonceEmail = None
     email_user.hashedPassword = email_user.nonceHashedPassword
     email_user.nonceHashedPassword = None
     email_user.nonce = None
     email_user.put_async()
     #email_user.saveToSession()
     
     # prepare OdenkiUser
     try:
         odenki_user = OdenkiUser.loadFromSession()
     except EntityNotFound:
         odenki_user = None
         
     # reconcile EmailUser and OdenkiUser
     if odenki_user is None:
         if email_user.odenkiId is None:
             odenki_user = OdenkiUser.createNew()
             assert isinstance(odenki_user, OdenkiUser)
             odenki_user.saveToSession()
             email_user.setOdenkiId(odenki_user.odenkiId)
             email_user.put_async()
         else:
             odenki_user = OdenkiUser.getByOdenkiId(email_user.odenkiId)
             odenki_user.saveToSession()
     else:
         if email_user.odenkiId is None:
             odenki_user.saveToSession()
             email_user.setOdenkiId(odenki_user.odenkiId)
             email_user.put_async()
         else:
             if email_user.odenkiId != odenki_user.odenkiId:
                 raise InconsistentAuthentiation({email_user.__class__.__name__: email_user,
                                                  odenki_user.__class__.__name__:odenki_user})
             odenki_user.saveToSession()
     
     jresponse.setResultValue(odenki_user.__class__.__name__, odenki_user)
     jresponse.setResultValue(email_user.__class__.__name__, email_user)
     #jresponse.setResultValue("nonce", nonce)
     jresponse.setRedirectTarget("http://%s/html/settings.html" % jrequest.request.host)
Example #18
0
    def POST(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        try:
            email = jrequest.getValue("email")[0]
            raw_password = jrequest.getValue("password")[0]
        except Exception:
            raise InvalidParams("email and password are required for method=login.")
        try:    
            email_user = EmailUser.getByEmail(email)
        except Exception:
            raise EntityNotFound("EmailUser entity is not found", {"email": email})
        assert isinstance(email_user, EmailUser)
        email_user.matchPassword(raw_password) # raises PasswordMismatch if password not matches
#        email_user.saveToSession()
        
        assert email_user.odenkiId is not None
        odenki_user = OdenkiUser.getByOdenkiId(email_user.odenkiId)
        odenki_user.saveToSession()
        EmailUser.deleteFromSession()
        
        jresponse.setResultValue("EmailUser", email_user)
        jresponse.setResultValue("OdenkiUser", odenki_user)
Example #19
0
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        
        odenki_user, email_user = None, None
        try:
            odenki_user = OdenkiUser.loadFromSession()
            assert isinstance(odenki_user, OdenkiUser)
            email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
            assert isinstance(email_user, EmailUser)
        except EntityNotFound: pass
        except AttributeError: pass

        jresponse.setResultValue("EmailUser", email_user)
        jresponse.setResultValue("OdenkiUser", odenki_user)
        jresponse.setResultValue("host", jrequest.request.host)
Example #20
0
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()

        odenki_user, email_user = None, None
        try:
            odenki_user = OdenkiUser.loadFromSession()
            assert isinstance(odenki_user, OdenkiUser)
            email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
            assert isinstance(email_user, EmailUser)
        except EntityNotFound:
            pass
        except AttributeError:
            pass

        jresponse.setResultValue("EmailUser", email_user)
        jresponse.setResultValue("OdenkiUser", odenki_user)
        jresponse.setResultValue("host", jrequest.request.host)
Example #21
0
    def setPassword(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
#        try:
#            session = gaesessions.get_current_session()
#            nonce = session[EMAIL_REGISTRATION_NONCE]
#        except Exception, e:
#            session.pop(EMAIL_REGISTRATION_NONCE);
#            raise UnexpectedState("Nonce is not stored in session data.")
#        assert isinstance(nonce, unicode)
#        email_user = EmailUser.getByNonce(nonce)
        try:
            odenki_user = OdenkiUser.loadFromSession()
        except EntityNotFound:
            odenki_user = None
        email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
        assert isinstance(email_user, EmailUser)
        try:
            raw_password = jrequest.getValue("password")[0].decode()
            raw_password2 = jrequest.getValue("password2")[0].decode()
            assert len(raw_password) < 8
        except Exception, e:
            raise InvalidParams("setPassword method requires password and password2. %s" % e)
Example #22
0
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()

        try:
            odenki_user = OdenkiUser.loadFromSession()
            assert isinstance(odenki_user, OdenkiUser)
        except:
            odenki_user = None

        try:
            email_user = EmailUser.getByOdenkiId(odenki_user.odenkiId)
            assert isinstance(email_user, EmailUser)
        except:
            email_user = None

        try:
            twitter_user = TwitterUser.getByOdenkiId(odenki_user.odenkiId)
            assert isinstance(twitter_user, TwitterUser)
        except:
            twitter_user = None

        try:
            gmail_user = GmailUser.getByOdenkiId(odenki_user.odenkiId)
            assert isinstance(gmail_user, GmailUser)
        except:
            gmail_user = None

        jresponse.setResultValue(odenki_user.__class__.__name__, odenki_user)
        jresponse.setResultObject(email_user)
        jresponse.setResultObject(twitter_user)
        jresponse.setResultObject(gmail_user)
        login_url = users.create_login_url(
            "/api/auth/Gmail/RedirectedFromGoogle")
        jresponse.setResultValue("login_url", login_url)
Example #23
0
    def deleteNullOdenkiId(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        assert jrequest.fromAdminHost
        jresponse.setId()
        email_user_query = EmailUser.query()
        assert (email_user_query, ndb.Query)
        #email_user_query = email_user_query.filter(EmailUser.odenkiId==None)
        email_user_query = email_user_query.filter()
        count1 = 0
        for email_user_key in email_user_query.fetch(keys_only=True):
            assert isinstance(email_user_key, ndb.Key)
            if email_user_key.get().odenkiId is None:
                email_user_key.delete_async()
                count1 += 1
        jresponse.setResultValue("count1", count1)

        count2 = 0
        for email_user_key in email_user_query.fetch(keys_only=True):
            assert isinstance(email_user_key, ndb.Key)
            if email_user_key.get().odenkiId is None:
                email_user_key.delete_async()
                count2 += 1
        jresponse.setResultValue("count2", count2)
Example #24
0
    def deleteNullOdenkiId(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        assert jrequest.fromAdminHost
        jresponse.setId()
        email_user_query = EmailUser.query()
        assert (email_user_query, ndb.Query)
        #email_user_query = email_user_query.filter(EmailUser.odenkiId==None)
        email_user_query = email_user_query.filter()
        count1 = 0
        for email_user_key in email_user_query.fetch(keys_only=True):
            assert isinstance(email_user_key, ndb.Key)
            if email_user_key.get().odenkiId is None:
                email_user_key.delete_async()
                count1 += 1
        jresponse.setResultValue("count1", count1)

        count2 = 0
        for email_user_key in email_user_query.fetch(keys_only=True):
            assert isinstance(email_user_key, ndb.Key)
            if email_user_key.get().odenkiId is None:
                email_user_key.delete_async()
                count2 += 1
        jresponse.setResultValue("count2", count2)