/
urusai
/
code_sample
Обзор
Документация
Войти
/
urusai
/
code_sample
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/di/current_user.py
33 строки
1 KB
nick
init
30 сен 2024, 16:12
30 сен 2024, 16:12
c68451c
Код
Авторство
О чём код?
from typing import Optional from fastapi import Depends from fastapi.security import HTTPAuthorizationCredentials from dto.users import FullUserDTO from di.markers import HTTPClientMarker, SettingsAPIMarker from const.enums.statuses import AuthStatusEnum from settings.api.settings import SettingsApplication from services.security.auth import AUTH_SCHEME, remove_token_type_in_token from services.http_client.client import HTTPClient class GetCurrentUser: def __init__(self, status: Optional[list[AuthStatusEnum]] = None): self.status = status or [AuthStatusEnum.ACTIVE] async def __call__( self, token: HTTPAuthorizationCredentials = Depends(AUTH_SCHEME), settings_app: SettingsApplication = Depends(SettingsAPIMarker), http_client: HTTPClient = Depends(HTTPClientMarker), ): reformat_token = remove_token_type_in_token(token.credentials) auth_url = f"{settings_app.AUTH_DOMAIN}/api/v1/me" access_token = f"{token.scheme} {reformat_token}" headers = {"Authorization": access_token} response, status = await http_client.request( method="GET", url=auth_url, headers=headers ) data = FullUserDTO.parse_obj(response) data.access_token = access_token return data