← full-stack-fastapi-template  /  backend/app/api/routes/private.py

1
from typing import Any
2
3
from fastapi import APIRouter
4
from pydantic import BaseModel
5
6
from app.api.deps import SessionDep
7
from app.core.security import get_password_hash
8
from app.models import (
9
    User,
10
    UserPublic,
11
)
12
13
router = APIRouter(tags=["private"], prefix="/private")
14
15
16
class PrivateUserCreate(BaseModel):
17
    email: str
18
    password: str
19
    full_name: str
20
    is_verified: bool = False
21
22
23
@router.post("/users/", response_model=UserPublic)
24
def create_user(user_in: PrivateUserCreate, session: SessionDep) -> Any:
25
    """
26
    Create a new user.
27
    """
28
29
    user = User(
30
        email=user_in.email,
31
        full_name=user_in.full_name,
32
        hashed_password=get_password_hash(user_in.password),
33
    )
34
35
    session.add(user)
36
    session.commit()
37
38
    return user
39