Exemplo n.º 1
0
 def POST(self, jrequest, jresponse):
     jresponse.setId()
     odenki_id = int(jrequest.getValue("odenkiId")[0])
     try:
         odenki_user = OdenkiUser.getByOdenkiId(odenki_id)
     except EntityNotFound, e:
         odenki_user = OdenkiUser.createNew()
Exemplo n.º 2
0
 def POST(self, jrequest, jresponse):
     jresponse.setId()
     odenki_id = int(jrequest.getValue("odenkiId")[0])
     try:
         odenki_user = OdenkiUser.getByOdenkiId(odenki_id)
     except EntityNotFound, e:
         odenki_user = OdenkiUser.createNew()
Exemplo n.º 3
0
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        jresponse.setRedirectTarget("/html/error.html")
        #jresponse.setRedirectTarget("/html/auth/index.html")
        current_user = users.get_current_user()
        if current_user is None:
            #            jresponse.setRedirectTarget("/html/auth/index.html")
            return
        #debug("type of current_user.user_id() is %s " % type(current_user.user_id()))

        # prepare GmailUser
        try:
            gmail_user = GmailUser.getByGmailId(current_user.user_id())
            gmail_user.nickname = current_user.nickname()
            gmail_user.gmail = current_user.email()
            gmail_user.put_async()
        except EntityNotFound:
            gmail_user = GmailUser()
            gmail_user.gmailId = current_user.user_id()
            gmail_user.gmail = current_user.email()
            gmail_user.nickname = current_user.nickname()
            gmail_user.put()
        assert isinstance(gmail_user, GmailUser)

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

        if odenki_user is None:
            if gmail_user.odenkiId is None:
                odenki_user = OdenkiUser.createNew()
                odenki_user.saveToSession()
                gmail_user.setOdenkiId(odenki_user.odenkiId)
                gmail_user.put_async()
            else:
                odenki_user = OdenkiUser.getByOdenkiId(gmail_user.odenkiId)
                odenki_user.saveToSession()
        else:
            if gmail_user.odenkiId is None:
                gmail_user.setOdenkiId(odenki_user.odenkiId)
                gmail_user.put_async()
                odenki_user.saveToSession()
            else:
                if gmail_user.odenkiId != odenki_user.odenkiId:
                    raise InconsistentAuthentiation({
                        gmail_user.__class__.__name__:
                        gmail_user,
                        odenki_user.__class__.__name__:
                        odenki_user
                    })
                odenki_user.saveToSession()

        jresponse.setResultValue("OdenkiUser", odenki_user)
        jresponse.setResultValue("GmailUser", gmail_user)
        jresponse.setRedirectTarget("/html/settings.html")
Exemplo n.º 4
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)
Exemplo n.º 5
0
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        jresponse.setRedirectTarget("/html/error.html")
        #jresponse.setRedirectTarget("/html/auth/index.html")
        current_user = users.get_current_user()
        if current_user is None:
#            jresponse.setRedirectTarget("/html/auth/index.html")
            return
        #debug("type of current_user.user_id() is %s " % type(current_user.user_id()))

        # prepare GmailUser
        try:
            gmail_user = GmailUser.getByGmailId(current_user.user_id())
            gmail_user.nickname = current_user.nickname()
            gmail_user.gmail = current_user.email()
            gmail_user.put_async()
        except EntityNotFound:
            gmail_user = GmailUser()
            gmail_user.gmailId = current_user.user_id()
            gmail_user.gmail = current_user.email()
            gmail_user.nickname = current_user.nickname()
            gmail_user.put()
        assert isinstance(gmail_user, GmailUser)
        
        # prepare OdenkiUser
        try:
            odenki_user = OdenkiUser.loadFromSession()
        except EntityNotFound:
            odenki_user = None
        
        if odenki_user is None:
            if gmail_user.odenkiId is None:
                odenki_user = OdenkiUser.createNew()
                odenki_user.saveToSession()
                gmail_user.setOdenkiId(odenki_user.odenkiId)
                gmail_user.put_async()
            else:
                odenki_user = OdenkiUser.getByOdenkiId(gmail_user.odenkiId)
                odenki_user.saveToSession()
        else:
            if gmail_user.odenkiId is None:
                gmail_user.setOdenkiId(odenki_user.odenkiId)
                gmail_user.put_async()
                odenki_user.saveToSession()
            else:
                if gmail_user.odenkiId != odenki_user.odenkiId:
                    raise InconsistentAuthentiation({gmail_user.__class__.__name__: gmail_user,
                                                     odenki_user.__class__.__name__:odenki_user})
                odenki_user.saveToSession()
        
        jresponse.setResultValue("OdenkiUser", odenki_user)
        jresponse.setResultValue("GmailUser", gmail_user)
        jresponse.setRedirectTarget("/html/settings.html")
Exemplo n.º 6
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)
Exemplo n.º 7
0
    def create(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)

        odenki_name = jrequest.request.get("odenkiName")
        odenki_name = odenki_name.decode()
        if odenki_name is None or len(odenki_name) == 0:
            raise InvalidParams("odenkiName is mandatory.")

        odenki_user = OdenkiUser.createNew()
        assert isinstance(odenki_user, OdenkiUser)
        odenki_user.odenkiName = odenki_name
        odenki_user.put()
        jresponse.addResult(odenki_user)
        jresponse.setId()
Exemplo n.º 8
0
    def create(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)

        odenki_name = jrequest.request.get("odenkiName")
        odenki_name = odenki_name.decode()
        if odenki_name is None or len(odenki_name) == 0:
            raise InvalidParams("odenkiName is mandatory.")

        odenki_user = OdenkiUser.createNew()
        assert isinstance(odenki_user, OdenkiUser)
        odenki_user.odenkiName = odenki_name
        odenki_user.put()
        jresponse.addResult(odenki_user)
        jresponse.setId()
Exemplo n.º 9
0
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        jresponse.setRedirectTarget("/html/auth/error.html")
        try:
            oauth_token = jrequest.getValue("oauth_token")[0]
            oauth_verifier = jrequest.getValue("oauth_verifier")[0]
        except:
            raise OAuthError("OAuthCallback was called with neither oauth_token nor oauth_verifier.")
        
        session = gaesessions.get_current_session()
        try:
            request_token = session[REQUEST_TOKEN_SESSION_KEY]
            request_token_secret = session[REQUEST_TOKEN_SECRET_SESSION_KEY]
        except KeyError:
            raise OAuthError("Request token have not been obtained.")
        
        if oauth_token != request_token:
            raise OAuthError("OAuthCallback gets token which is not identical to retaining request token.")

        token = oauth2.Token(request_token, request_token_secret)
        token.set_verifier(oauth_verifier)
        consumer = oauth2.Consumer(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET)
        client = oauth2.Client(consumer, token)
        resp, content = client.request(ACCESS_TOKEN_URL, "POST")
        access_token_dict = dict(parse_qsl(content))
        try:
            access_token = access_token_dict["oauth_token"]
            access_token_secret = access_token_dict["oauth_token_secret"]
            user_id = access_token_dict["user_id"]
            screen_name = access_token_dict["screen_name"]
        except KeyError:
            raise OAuthError({"request_token": request_token,
                              "ACCESS_TOKEN_URL": ACCESS_TOKEN_URL
                              },
                             message="OAuthCallback failed to exchange verified request token to access token.")
    
        # prepare TwittrUser
        try: 
            twitter_user = TwitterUser.getByTwitterId(int(user_id))
            twitter_user.setAccessToken(access_token, access_token_secret)
            twitter_user.screenName = unicode(screen_name)
            twitter_user.verifyCredentials11()
            twitter_user.put_async()
        except EntityNotFound:
            twitter_user = TwitterUser.create(int(user_id))
            twitter_user.setAccessToken(access_token, access_token_secret)
            twitter_user.screenName = unicode(screen_name)
            twitter_user.verifyCredentials11()
            twitter_user.put()
        assert isinstance(twitter_user, TwitterUser)
        
        # prepare OdenkiUser
        try:
            odenki_user = OdenkiUser.loadFromSession()
        except EntityNotFound: 
            odenki_user = None
        
        # reconcile TwitterUser and OdenkiUser
        if odenki_user is None:
            if twitter_user.odenkiId is None:
                odenki_user = OdenkiUser.createNew()
                assert isinstance(odenki_user, OdenkiUser)
                odenki_user.saveToSession()
                twitter_user.setOdenkiId(odenki_user.odenkiId)
                twitter_user.put_async()
            else:
                odenki_user = OdenkiUser.getByOdenkiId(twitter_user.odenkiId)
                odenki_user.saveToSession()
        else:
            if twitter_user.odenkiId is None:
                odenki_user.saveToSession()
                twitter_user.setOdenkiId(odenki_user.odenkiId)
                twitter_user.put_async()
            else:
                if twitter_user.odenkiId != odenki_user.odenkiId:
                    raise InconsistentAuthentiation({twitter_user.__class__.__name__: twitter_user,
                                                     odenki_user.__class__.__name__:odenki_user})
                odenki_user.saveToSession()
        
        jresponse.setResultValue("OdenkiUser", odenki_user)
        jresponse.setResultValue("TwitterUser", twitter_user)
        jresponse.setRedirectTarget("/html/settings.html")
Exemplo n.º 10
0
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        jresponse.setRedirectTarget("/html/auth/error.html")
        try:
            oauth_token = jrequest.getValue("oauth_token")[0]
            oauth_verifier = jrequest.getValue("oauth_verifier")[0]
        except:
            raise OAuthError(
                "OAuthCallback was called with neither oauth_token nor oauth_verifier."
            )

        session = gaesessions.get_current_session()
        try:
            request_token = session[REQUEST_TOKEN_SESSION_KEY]
            request_token_secret = session[REQUEST_TOKEN_SECRET_SESSION_KEY]
        except KeyError:
            raise OAuthError("Request token have not been obtained.")

        if oauth_token != request_token:
            raise OAuthError(
                "OAuthCallback gets token which is not identical to retaining request token."
            )

        token = oauth2.Token(request_token, request_token_secret)
        token.set_verifier(oauth_verifier)
        consumer = oauth2.Consumer(TWITTER_CONSUMER_KEY,
                                   TWITTER_CONSUMER_SECRET)
        client = oauth2.Client(consumer, token)
        resp, content = client.request(ACCESS_TOKEN_URL, "POST")
        access_token_dict = dict(parse_qsl(content))
        try:
            access_token = access_token_dict["oauth_token"]
            access_token_secret = access_token_dict["oauth_token_secret"]
            user_id = access_token_dict["user_id"]
            screen_name = access_token_dict["screen_name"]
        except KeyError:
            raise OAuthError(
                {
                    "request_token": request_token,
                    "ACCESS_TOKEN_URL": ACCESS_TOKEN_URL
                },
                message=
                "OAuthCallback failed to exchange verified request token to access token."
            )

        # prepare TwittrUser
        try:
            twitter_user = TwitterUser.getByTwitterId(int(user_id))
            twitter_user.setAccessToken(access_token, access_token_secret)
            twitter_user.screenName = unicode(screen_name)
            twitter_user.verifyCredentials11()
            twitter_user.put_async()
        except EntityNotFound:
            twitter_user = TwitterUser.create(int(user_id))
            twitter_user.setAccessToken(access_token, access_token_secret)
            twitter_user.screenName = unicode(screen_name)
            twitter_user.verifyCredentials11()
            twitter_user.put()
        assert isinstance(twitter_user, TwitterUser)

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

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

        jresponse.setResultValue("OdenkiUser", odenki_user)
        jresponse.setResultValue("TwitterUser", twitter_user)
        jresponse.setRedirectTarget("/html/settings.html")