from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from backend.app.api.deps import get_auth_service, get_current_user 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( current_user: dict = Depends(get_current_user), ) -> dict: return success_payload(current_user) @router.post("/logout") def logout( authorization: str | None = Header(default=None), auth_service: AuthService = Depends(get_auth_service), ) -> dict: token = (authorization or "").removeprefix("Bearer").strip() return success_payload(auth_service.logout(token))