예제 #1
0
def load_access_info_cache(**_kwargs):
    ret = {}
    client_pk, user_pk, scope, is_refreshable, expire, user_secret_key = oauth2_server.reverse_access_token(
        _kwargs["access_token"]
    )
    ret["_ut_oauth2_client_pk"] = client_pk
    ret["_ut_oauth2_user_pk"] = user_pk
    ret["_ut_oauth2_scope"] = scope
    ret["_ut_oauth2_secret_key"] = user_secret_key
    ret["_ut_oauth2_expire"] = expire
    ret["_ut_oauth2_access_token"] = _kwargs["access_token"].encode("utf8")
    return ret
예제 #2
0
def get_oauth2_authorization_info(request):
    if not hasattr(request, "_cached_oauth2_authorization_info"):
        access_token = request.access_token
        access_info = {}
        if access_token:
            # TODO: session -> cache, api doesn't allow session ...
            try:
                is_access_token_valid = False
                access_info = access_info_cache.get(access_token=access_token)
                if access_info.get("_ut_oauth2_access_token"):
                    if access_info["_ut_oauth2_access_token"] != access_token.encode("utf8"):
                        is_access_token_valid = False
                    else:
                        uask = oauth2_server.get_user_secret_key(
                            access_info["_ut_oauth2_user_pk"], access_info["_ut_oauth2_client_pk"]
                        )
                        if access_info["_ut_oauth2_secret_key"] != uask:
                            is_access_token_valid = False
                        elif access_info["_ut_oauth2_expire"] - CurrentTimestamp()() <= 0:
                            is_access_token_valid = False
                        else:
                            is_access_token_valid = True
                if not is_access_token_valid:
                    client_pk, user_pk, scope, is_refreshable, expire, user_secret_key = oauth2_server.reverse_access_token(
                        access_token
                    )
                    access_info["_ut_oauth2_client_pk"] = client_pk
                    access_info["_ut_oauth2_user_pk"] = user_pk
                    access_info["_ut_oauth2_scope"] = scope
                    access_info["_ut_oauth2_secret_key"] = user_secret_key
                    access_info["_ut_oauth2_expire"] = expire
                    access_info["_ut_oauth2_access_token"] = access_token.encode("utf8")
            except:
                import traceback

                traceback.print_exc()
                access_info["_ut_oauth2_client_pk"] = None
                access_info["_ut_oauth2_scope"] = None
                access_info["_ut_oauth2_secret_key"] = None
                access_info["_ut_oauth2_expire"] = None
                access_info["_ut_oauth2_access_token"] = None
                access_info["_ut_oauth2_user_pk"] = None
        else:
            access_info["_ut_oauth2_client_pk"] = None
            access_info["_ut_oauth2_scope"] = None
            access_info["_ut_oauth2_secret_key"] = None
            access_info["_ut_oauth2_expire"] = None
            access_info["_ut_oauth2_access_token"] = None
            access_info["_ut_oauth2_user_pk"] = None
        request._cached_oauth2_authorization_info = AuthorizationInfo()
        request._cached_oauth2_authorization_info.secret_key = access_info.get("_ut_oauth2_secret_key")
        request._cached_oauth2_authorization_info.client_pk = access_info.get("_ut_oauth2_client_pk")
        request._cached_oauth2_authorization_info.user_pk = access_info.get("_ut_oauth2_user_pk")
        request._cached_oauth2_authorization_info.scope = access_info.get("_ut_oauth2_scope")
        request._cached_oauth2_authorization_info.expire = access_info.get("_ut_oauth2_expire")
        return request._cached_oauth2_authorization_info
    return request._cached_oauth2_authorization_info