@@ -86,18 +86,17 @@ class SyncAuthBearer(HttpBearer): **{key: user_payload[f'{key}'] for key in settings.JWT_SETTINGS['encode_attributes']} ) except InvalidToken: - access = AccessToken.objects.select_related( - 'user', - *(f'user__{el}' for el in mapper.get('select', [])) - ).prefetch_related( - *(f'user__{el}' for el in mapper.get('prefetch', [])) - ).only( - *(f'user__{el}' for el in mapper.get('only', [])) - ).filter(token=token).order_by('-created') - request.provider = 'yandex' - if a := access.first(): - user = a.user - raise HttpError(401, _('Access token expired or does not exist')) + try: + user = CustomUserModel.objects.select_related( + *mapper.get('select', []) + ).prefetch_related( + *mapper.get('prefetch', []) + ).only( + *mapper.get('only', []) + ).filter(oauth2_provider_accesstoken__token=token).latest('oauth2_provider_accesstoken__created') + request.provider = 'yandex' + except: + raise HttpError(401, _('Access token expired or does not exist')) _check_ip_client(user, request) return user @@ -119,17 +118,15 @@ class AsyncAuthBearer(HttpBearer): ) except InvalidToken: try: - access = await AccessToken.objects.select_related( - 'user', - *(f'user__{el}' for el in mapper.get('select', [])) + user = await CustomUserModel.objects.select_related( + *mapper.get('select', []) ).prefetch_related( - *(f'user__{el}' for el in mapper.get('prefetch', [])) + *mapper.get('prefetch', []) ).only( - *(f'user__{el}' for el in mapper.get('only', [])) - ).aget(token=token) + *mapper.get('only', []) + ).filter(oauth2_provider_accesstoken__token=token).alatest('oauth2_provider_accesstoken__created') request.provider = 'yandex' - user = access.user - except AccessToken.DoesNotExist: + except Exception: raise HttpError(401, _('Access token expired or does not exist')) await sync_to_async(_check_ip_client)(user, request) return user