from app.lib.jwt.token import JwtToken from app.lib.response.admin_return import AdminReturn from app.service.admin.base_admin_service import BaseAdminService from app.service.base_token_service import BaseTokenService class RefreshService(BaseAdminService): def __init__(self, token_service: BaseTokenService, admin_return: AdminReturn) -> None: super().__init__(admin_return) self.token_service = token_service async def handle(self, token: JwtToken) -> dict: return self.admin_return.success("success", await self.refresh_token(token)) async def refresh_token(self, token: JwtToken) -> dict[str, int | str]: jwt = self.token_service.get_jwt("admin") await jwt.add_blacklist(token) return { "access_token": jwt.builder_access_token(token.jwt_id), "refresh_token": jwt.builder_refresh_token(token.jwt_id), "expire_at": int(jwt.get_config("ttl", 0)), }