Initial FastAPI admin auth scaffold

This commit is contained in:
2026-06-05 17:10:30 +08:00
commit 5635da9ea5
65 changed files with 1407 additions and 0 deletions

View File

@@ -0,0 +1 @@
"""Admin controllers."""

View File

@@ -0,0 +1,32 @@
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)

View File

@@ -0,0 +1,21 @@
from fastapi import APIRouter, Depends
from app.core.dependencies import get_current_user_service
from app.middleware.admin.admin_token_middleware import AdminTokenMiddleware
from app.middleware.admin.permission_middleware import PermissionMiddleware
from app.service.admin.profile.current_user_service import CurrentUserService
router = APIRouter(prefix="/admin/profile", tags=["admin-profile"])
@router.get(
"/current",
dependencies=[
Depends(AdminTokenMiddleware()),
Depends(PermissionMiddleware()),
],
)
async def current(
service: CurrentUserService = Depends(get_current_user_service),
) -> dict:
return await service.handle()