예제 #1
0
파일: util.py 프로젝트: avh4/khan-academy
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
예제 #2
0
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
예제 #3
0
    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
예제 #4
0
    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
예제 #5
0
    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)