33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
from fastapi import APIRouter, Depends, Request
|
||
|
||
from app.core.dependencies import get_login_service, get_refresh_service
|
||
from app.lib.jwt.token import JwtToken
|
||
from app.middleware.admin.refresh_admin_token_middleware import RefreshAdminTokenMiddleware
|
||
from app.request.admin.login_request import LoginRequest
|
||
from app.service.admin.login.login_service import LoginService
|
||
from app.service.admin.login.refresh_service import RefreshService
|
||
|
||
router = APIRouter(prefix="/admin/login", tags=["admin-login"])
|
||
|
||
|
||
@router.post("/login")
|
||
async def login(
|
||
payload: LoginRequest,
|
||
request: Request,
|
||
# FastAPI 的 Depends 类似 Hyperf 里的容器注入。
|
||
# 请求进入这个接口时,框架会先调用 get_login_service(),
|
||
# 把组装好的 LoginService 传进 service 参数。
|
||
service: LoginService = Depends(get_login_service),
|
||
) -> dict:
|
||
return await service.handle(payload, request)
|
||
|
||
|
||
@router.post("/refresh")
|
||
async def refresh(
|
||
# 这里把 RefreshAdminTokenMiddleware 当成依赖使用。
|
||
# FastAPI 会先执行 refresh token 校验,通过后才进入 controller。
|
||
token: JwtToken = Depends(RefreshAdminTokenMiddleware()),
|
||
service: RefreshService = Depends(get_refresh_service),
|
||
) -> dict:
|
||
return await service.handle(token)
|