from fastapi import APIRouter, Depends, Header from sqlalchemy.orm import Session from backend.app.api.deps import get_auth_service from backend.app.db import get_db_session from backend.app.schemas.auth import LoginRequest from backend.app.schemas.common import success_payload from backend.app.services.auth_service import AuthService router = APIRouter(prefix="/api/auth", tags=["auth"]) @router.post("/login") def login( payload: LoginRequest, auth_service: AuthService = Depends(get_auth_service), session: Session = Depends(get_db_session), ) -> dict: return success_payload(auth_service.login(payload.username, payload.password, payload.role_type, session)) @router.get("/me") def me( authorization: str | None = Header(default=None), auth_service: AuthService = Depends(get_auth_service), session: Session = Depends(get_db_session), ) -> dict: token = (authorization or "").removeprefix("Bearer").strip() user = auth_service.get_me(token, session) if not user: from backend.app.core.error_codes import ErrorCode from backend.app.core.exceptions import AppException raise AppException(code=ErrorCode.UNAUTHORIZED, message="未登录或登录失效", status_code=401) return success_payload(user) @router.post("/logout") def logout() -> dict: return success_payload({"success": True})