import fastapi from jose import JWTError, jwt from pydantic import ValidationError import lib.app.settings as app_settings from lib.api.v1 import schemas as app_schemas app = fastapi.FastAPI() settings = app_settings.settings security = fastapi.security.HTTPBearer() def get_token_data( authorization: fastapi.security.HTTPAuthorizationCredentials = fastapi.Security(security), ) -> app_schemas.entity.Token: token = authorization.credentials try: secret_key = settings.project.jwt_secret_key payload = jwt.decode(token, secret_key, algorithms=["HS256"]) return app_schemas.entity.Token(**payload) except (JWTError, ValidationError): raise fastapi.HTTPException( status_code=fastapi.status.HTTP_401_UNAUTHORIZED, detail="Could not validate credentials", )