from fastapi import APIRouter from pydantic import BaseModel from datetime import datetime, timedelta, timezone from common.token.token_manager import TokenManager router = APIRouter() token_manager = TokenManager() # Initialize TokenManager class TokenRequest(BaseModel): id: str role: int class TokenResponse(BaseModel): access_token: str refresh_token: str expires_in: datetime @router.post("/generate-tokens", response_model=TokenResponse) async def generate_tokens(request: TokenRequest): """ Endpoint to generate access and refresh tokens. """ subject = {"id": request.id, "role": request.role} access_token = token_manager.create_access_token(subject) refresh_token = token_manager.create_refresh_token(subject) expires_in = datetime.now(timezone.utc) + timedelta( minutes=token_manager.access_token_expire_minutes ) return TokenResponse( access_token=access_token, refresh_token=refresh_token, expires_in=expires_in )