def get_current_user_id_from_oauth_map(oauth_map): user_id = None if oauth_map.uses_google(): user_id = get_google_user_id_and_email_from_oauth_map(oauth_map)[0] elif oauth_map.uses_facebook(): user_id = facebook_util.get_facebook_user_id_from_oauth_map(oauth_map) return user_id
def get_user_data(self): from models import UserData user_id = None email = None if self.uses_google(): user_id, email = get_google_user_id_and_email_from_oauth_map(self) elif self.uses_facebook(): user_id = get_facebook_user_id_from_oauth_map(self) email = user_id user_data = UserData.get_from_user_id(user_id) or \ UserData.get_from_db_key_email(email) or \ UserData.insert_for(user_id, email) return user_data
def _get_authenticated_user_info(self): """ Gets the UserData and user_id for this OAuthMap, if it's still valid. Returns (None, None) if no valid user is found. """ if self.uses_password(): user_data = auth.tokens.AuthToken.get_user_for_value( self.khan_auth_token, user_models.UserData.get_from_user_id) # Note that we can't "create" a user by username/password logins # via the oauth flow, since the signup process for setting a KA # account is more involved than just setting a user_id. if user_data: return (user_data, user_data.user_id) else: return (None, None) else: user_id = None email = None user_data = None if self.uses_google(): user_id, email = \ get_google_user_id_and_email_from_oauth_map(self) elif self.uses_facebook(): user_id = get_facebook_user_id_from_oauth_map(self) email = user_id if not user_id: return (None, None) existing = user_models.UserData.get_from_request_info( user_id, email, self) if existing: # Note that existing.user_id may be different than # user_id computed above. return (existing, existing.user_id) # TODO(benkomalo): consolidate this with logic in PostLogin # since it will likely have to duplicate logic re: first time # logins for Google/FB users and doing the proper connections. user_data = user_models.UserData.insert_for(user_id, email) return (user_data, user_data.user_id)