from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.ext.asyncio import AsyncSession from db.session import get_db from core.deps import get_current_admin from domains.users.schemas import ( UserCreate, UserCreateResult ) from domains.users.service import ( create_user_by_admin, reset_user_secret ) from domains.users.repo import get_user_by_id router = APIRouter( prefix="/users", tags=["users"] ) @router.post("/", response_model=UserCreateResult) async def create_user( payload: UserCreate, db: AsyncSession = Depends(get_db), admin = Depends(get_current_admin) ): user, secret = await create_user_by_admin( db, payload.username, payload.role ) return { "user": user, "secret": secret } @router.post("/{user_id}/reset-secret") async def reset_secret( user_id: str, db: AsyncSession = Depends(get_db), admin = Depends(get_current_admin) ): user = await get_user_by_id(db, user_id) if not user: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="User not found" ) new_secret = await reset_user_secret(db, user) return {"secret": new_secret}