Files
fastapi_server/app/controller/admin/login_controller.py

33 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)