from fastapi import APIRouter, Depends, status from fastapi_users import models from fastapi_users.manager import BaseUserManager from app.schemas.user import UserCreate, UserRead, UserUpdate from app.services.user_service import auth_backend, fastapi_users router = APIRouter() @router.delete( "/users/me", status_code=status.HTTP_204_NO_CONTENT, tags=["users"], summary="Delete current user", response_description="The user has been successfully deleted.", ) async def delete_me( user: models.UserProtocol = Depends(fastapi_users.current_user(active=True)), user_manager: BaseUserManager = Depends(fastapi_users.get_user_manager), ): """ Delete the currently authenticated user. """ await user_manager.delete(user) # Keep existing paths as-is under /auth/* and /users/* router.include_router( fastapi_users.get_auth_router(auth_backend), prefix="/auth/jwt", tags=["auth"] ) router.include_router( fastapi_users.get_register_router(UserRead, UserCreate), prefix="/auth", tags=["auth"], ) router.include_router( fastapi_users.get_reset_password_router(), prefix="/auth", tags=["auth"], ) router.include_router( fastapi_users.get_verify_router(UserRead), prefix="/auth", tags=["auth"], ) router.include_router( fastapi_users.get_users_router(UserRead, UserUpdate), prefix="/users", tags=["users"], )