34 lines
895 B
Python
34 lines
895 B
Python
from fastapi import APIRouter, HTTPException
|
|
from pydantic import BaseModel
|
|
from infra.token.token_manager import TokenManager
|
|
|
|
router = APIRouter()
|
|
token_manager = TokenManager() # Initialize TokenManager
|
|
|
|
|
|
class RefreshTokenRequest(BaseModel):
|
|
refresh_token: str
|
|
id: str
|
|
role: int
|
|
|
|
|
|
class RefreshTokenResponse(BaseModel):
|
|
access_token: str
|
|
|
|
|
|
@router.post("/refresh-token", response_model=RefreshTokenResponse)
|
|
async def refresh_token(request: RefreshTokenRequest):
|
|
"""
|
|
Endpoint to refresh the access token using a valid refresh token.
|
|
"""
|
|
subject = {"id": request.id, "role": request.role}
|
|
|
|
try:
|
|
access_token = token_manager.refresh_access_token(
|
|
request.refresh_token, subject
|
|
)
|
|
except ValueError as e:
|
|
raise HTTPException(status_code=400, detail=str(e))
|
|
|
|
return RefreshTokenResponse(access_token=access_token)
|