This repository has been archived on 2025-09-17. You can view files and clone it, but cannot push or open issues or pull requests.
api_firebird/core/auth.py
2025-06-28 20:09:55 -03:00

35 lines
1 KiB
Python

from pytz import timezone
from datetime import datetime, timedelta
from fastapi.security import OAuth2PasswordBearer
from jose import jwt
from core.configs import settings
from api.v1.controllers.g_usuario_controller import authenticate_user
# Define o esquema OAuth2 para login
oauth2_schema = OAuth2PasswordBearer(
tokenUrl=f"{settings.API_V1_STR}/usuarios/login"
)
# Função para criar um token JWT
def create_token(tipo_token: str, tempo_vida: timedelta, sub: str) -> str:
payload = {}
sp = timezone('America/Sao_Paulo')
expira = datetime.now(tz=sp) + tempo_vida
payload["type"] = tipo_token
payload["exp"] = expira
payload["iat"] = datetime.now(tz=sp)
payload["sub"] = str(sub)
return jwt.encode(payload, settings.JWT_SECRET, algorithm=settings.ALGORITHM)
# Criação do token de acesso (access_token)
def create_access_token(sub: str) -> str:
return create_token(
tipo_token='access_token',
tempo_vida=timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES),
sub=sub
)