import enum from typing import Optional from uuid import UUID from pydantic import BaseModel, EmailStr, Field class Role(enum.StrEnum): MEMBER = "member" ADMINISTRATOR = "administrator" class UserBase(BaseModel): email: EmailStr = Field(max_length=60) friendly_name: str is_active: bool class UserUpdate(BaseModel): email: Optional[str] = None friendly_name: Optional[str] = None class AdministrativeUserUpdate(UserUpdate): is_active: Optional[bool] = None class UserCreate(UserBase): password: str = Field(max_length=100) pass class User(UserBase): id: UUID role: Role class Config: from_attributes = True class PasswordUpdate(BaseModel): old_password: str = Field(max_length=100) new_password: str = Field(max_length=100) class LoginRequest(BaseModel): email: EmailStr = Field(max_length=60) password: str = Field(max_length=100)