36 lines
1010 B
Python
36 lines
1010 B
Python
from fastapi import APIRouter
|
|
from pydantic import BaseModel
|
|
from datetime import datetime, timedelta, timezone
|
|
from infra.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
|
|
)
|