saas_api/actions/jwt/get_current_user.py

25 lines
874 B
Python

from fastapi import Depends, HTTPException, status, Request
from fastapi.security import OAuth2PasswordBearer
from actions.jwt.verify_token import VerifyToken # A classe que criamos anteriormente
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") # Apenas requerido pelo FastAPI
def get_current_user(token: str = Depends(oauth2_scheme)):
# Ação que válida o tokne
verify_token = VerifyToken()
# Obtem o resultado da validação
result = verify_token.execute(token)
# Verifica se a resposta é diferente de inválida
if result["status"] != "valid":
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=result.get("message", "Token inválido ou expirado"),
headers={"WWW-Authenticate": "Bearer"},
)
# Retorna apenas os dados do token
return result["payload"]