from fastapi import APIRouter, Depends, status from app.api.dependencies import get_auth_service, get_current_user from app.db.models import User from app.schemas.auth import LoginRequest, RegisterRequest, TokenResponse, UserResponse from app.services.auth import AuthService router = APIRouter(prefix="/auth", tags=["Authentication"]) @router.post("/register", response_model=UserResponse, status_code=status.HTTP_201_CREATED) def register( payload: RegisterRequest, auth_service: AuthService = Depends(get_auth_service), ) -> UserResponse: return auth_service.register(payload) @router.post("/login", response_model=TokenResponse) def login( payload: LoginRequest, auth_service: AuthService = Depends(get_auth_service), ) -> TokenResponse: return auth_service.login(payload) @router.get("/me", response_model=UserResponse) def me(current_user: User = Depends(get_current_user)) -> UserResponse: return UserResponse.model_validate(current_user)