Files
group_xinghuo_jinrong/app/api/auth.py
T

44 lines
1.4 KiB
Python

"""Authentication endpoints."""
from __future__ import annotations
from fastapi import APIRouter, Depends, Request
from app.api.deps import get_auth_context
from app.model.schemas import AuthContext, LoginRequest
from app.service.audit_service import audit_service
from app.service.auth_service import auth_service
from app.utils.exceptions import AuthenticationError
from app.utils.response import success_response
router = APIRouter()
AUTH_CONTEXT_DEP = Depends(get_auth_context)
@router.post("/login")
def login(payload: LoginRequest, request: Request):
try:
token, user = auth_service.authenticate_dev_user(payload.username, payload.password)
except AuthenticationError:
audit_service.record(
trace_id=request.state.trace_id,
event_type="auth_login_failed",
actor_id=payload.username or "anonymous",
agent_type="platform",
decision="invalid_credentials",
)
raise
audit_service.record(
trace_id=request.state.trace_id,
event_type="auth_login",
actor_id=user.user_id,
agent_type="platform",
decision="success",
)
return success_response(request, {"access_token": token, "token_type": "bearer", "user": user.model_dump()})
@router.get("/me")
def me(request: Request, auth: AuthContext = AUTH_CONTEXT_DEP):
return success_response(request, auth.model_dump())