from typing import Any from fastapi import APIRouter, HTTPException from pydantic import BaseModel from fluksio.api.deps import SessionDep from fluksio.core.config import settings from fluksio.core.security import get_password_hash from fluksio.models import ( User, UserPublic, ) router = APIRouter(tags=["private"], prefix="/private") def _require_private_api() -> None: if not (settings.ENVIRONMENT == "local" and settings.PRIVATE_API_ENABLED): raise HTTPException(status_code=403, detail="Private API is disabled") class PrivateUserCreate(BaseModel): email: str password: str full_name: str is_verified: bool = False @router.post("/users/", response_model=UserPublic) def create_user(user_in: PrivateUserCreate, session: SessionDep) -> Any: """ Create a new user. """ _require_private_api() user = User( email=user_in.email, full_name=user_in.full_name, hashed_password=get_password_hash(user_in.password), ) session.add(user) session.commit() return user