Initial FastAPI admin auth scaffold
This commit is contained in:
22
app/service/admin/login/refresh_service.py
Normal file
22
app/service/admin/login/refresh_service.py
Normal file
@@ -0,0 +1,22 @@
|
||||
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)),
|
||||
}
|
||||
Reference in New Issue
Block a user