def find_user_by_oauth_request_token(token): """returns a user by oauth_request_token""" """oauth_request_token is used to identify the user in the callback""" if token == None: return None; logging.info("finding oauth_request_token %s in redis " % token) key = ENVIRONMENT['REDIS_PREFIX'] + "oauth_request_token:%s" % (token) data = get_redis_server().get(key) if data != None: logging.info("found token (%s): %s" % (token, data)) return find_user_by_username(data) else: logging.info("unable to find user by oauth_request_token (%s): '%s'" % (key, token)) return None
def get(self, settings): # we are in development, fake it logging.debug( "facebook faking it" ); user = find_user_by_username(self.username) oauth_data = ENVIRONMENT['TEST_OAUTH_DATA'] # we should store this data now if user == None: user = User(username=self.username, nickname=oauth_data['username'], current_oauth_provider='facebook', oauth_data=json.dumps(oauth_data)) else: user.nickname = oauth_data['username'] user.current_oauth_provider = 'facebook' user.oauth_data = json.dumps(oauth_data) # adding an existing key just replaces it add_user(user) return self.redirect("/oauth/facebook/loggedin")
def find_user_by_oauth_request_token(token): """returns a user by oauth_request_token""" """oauth_request_token is used to identify the user in the callback""" if token == None: return None logging.info("finding oauth_request_token %s in redis " % token) key = ENVIRONMENT['REDIS_PREFIX'] + "oauth_request_token:%s" % (token) data = get_redis_server().get(key) if data != None: logging.info("found token (%s): %s" % (token, data)) return find_user_by_username(data) else: logging.info("unable to find user by oauth_request_token (%s): '%s'" % (key, token)) return None
def redirector(handler, settings): """gets the token and redirects the user to the oauth login page """ """this is always called "statically" from OAuthHandler""" try: url = settings['REQUEST_TOKEN_URL'] oauth_callback = settings['CALLBACK_URL'] logging.debug("oauth_callback: %s" % oauth_callback) query_params = {'oauth_callback': oauth_callback} kv_pairs = ChatifyOAuth1aHandler._request(handler, 'POST', settings, url, query_params, None) # save our data if 'oauth_token' in kv_pairs: oauth_token = kv_pairs['oauth_token'] user = find_user_by_username(handler.username) logging.debug("oauth_token: %s" % oauth_token) if user == None: user = User( username=handler.username, nickname=handler.username, current_oauth_provider=settings['PROVIDER_NAME'], oauth_data=json.dumps(kv_pairs)) else: user.current_oauth_provider = settings['PROVIDER_NAME'] user.oauth_data = json.dumps(kv_pairs) add_user(user) add_oauth_request_token(oauth_token, user.username) return handler.redirect(settings['AUTHORIZE_URL'] + '?oauth_token=' + kv_pairs['oauth_token']) except Exception: raise # we shouldn't get here handler.add_to_payload('message', 'an unknown error occured') return handler.render()
def redirector(handler, settings): """handle the redirect to an oauth provider""" """this is always called "statically" from OAuthHandler""" oauth_request_token = handler.username user = find_user_by_username(handler.username) if user == None: user = User(username=handler.username, nickname=handler.username, current_oauth_provider=settings['PROVIDER_NAME']) else: user.current_oauth_provider = settings['PROVIDER_NAME'] add_user(user) add_oauth_request_token( oauth_request_token, user.username ) url = "%s?client_id=%s&scope=%s&display=popup&redirect_uri=%s" % (settings['REQUEST_URL'], settings['APP_ID'], settings['SCOPE'], settings['REDIRECT_URL'] + "?oauth_request_token=" + oauth_request_token) # send user to facebook login logging.debug( settings['PROVIDER_NAME'] + " url %s" % url ); return handler.redirect(url)
def get(self, settings): # we are in development, fake it logging.debug("facebook faking it") user = find_user_by_username(self.username) oauth_data = ENVIRONMENT['TEST_OAUTH_DATA'] # we should store this data now if user == None: user = User(username=self.username, nickname=oauth_data['username'], current_oauth_provider='facebook', oauth_data=json.dumps(oauth_data)) else: user.nickname = oauth_data['username'] user.current_oauth_provider = 'facebook' user.oauth_data = json.dumps(oauth_data) # adding an existing key just replaces it add_user(user) return self.redirect("/oauth/facebook/loggedin")
def redirector(handler, settings): """gets the token and redirects the user to the oauth login page """ """this is always called "statically" from OAuthHandler""" try: url = settings['REQUEST_TOKEN_URL'] oauth_callback = settings['CALLBACK_URL'] logging.debug("oauth_callback: %s" % oauth_callback); query_params = { 'oauth_callback': oauth_callback } kv_pairs = ChatifyOAuth1aHandler._request(handler, 'POST', settings, url, query_params, None) # save our data if 'oauth_token' in kv_pairs: oauth_token = kv_pairs['oauth_token'] user = find_user_by_username(handler.username) logging.debug( "oauth_token: %s" % oauth_token ); if user == None: user = User(username=handler.username, nickname=handler.username, current_oauth_provider=settings['PROVIDER_NAME'], oauth_data=json.dumps(kv_pairs)) else: user.current_oauth_provider = settings['PROVIDER_NAME'] user.oauth_data = json.dumps(kv_pairs) add_user(user) add_oauth_request_token( oauth_token, user.username ) return handler.redirect(settings['AUTHORIZE_URL'] + '?oauth_token=' + kv_pairs['oauth_token']) except Exception: raise # we shouldn't get here handler.add_to_payload('message', 'an unknown error occured') return handler.render()
def redirector(handler, settings): """handle the redirect to an oauth provider""" """this is always called "statically" from OAuthHandler""" oauth_request_token = handler.username user = find_user_by_username(handler.username) if user == None: user = User(username=handler.username, nickname=handler.username, current_oauth_provider=settings['PROVIDER_NAME']) else: user.current_oauth_provider = settings['PROVIDER_NAME'] add_user(user) add_oauth_request_token(oauth_request_token, user.username) url = "%s?client_id=%s&scope=%s&display=popup&redirect_uri=%s" % ( settings['REQUEST_URL'], settings['APP_ID'], settings['SCOPE'], settings['REDIRECT_URL'] + "?oauth_request_token=" + oauth_request_token) # send user to facebook login logging.debug(settings['PROVIDER_NAME'] + " url %s" % url) return handler.redirect(url)