from datetime import datetime from pydantic import BaseModel, ConfigDict, EmailStr from app.schemas.rbac import RoleRead class UserBase(BaseModel): email: EmailStr full_name: str | None = None class UserCreate(UserBase): password: str is_superuser: bool = False role_ids: list[int] = [] class UserUpdate(BaseModel): email: EmailStr | None = None full_name: str | None = None password: str | None = None is_active: bool | None = None is_superuser: bool | None = None role_ids: list[int] | None = None class UserRead(UserBase): model_config = ConfigDict(from_attributes=True) id: int is_active: bool is_superuser: bool auth_provider: str = "local" created_at: datetime roles: list[RoleRead] = [] class RegisterRequest(UserBase): password: str