""" Pydantic models for authentication and user management """ from datetime import datetime from typing import Optional, List from pydantic import BaseModel, EmailStr, Field class TokenData(BaseModel): """Token data extracted from JWT""" username: Optional[str] = None user_id: Optional[str] = None scopes: List[str] = [] class UserBase(BaseModel): """Base user model""" username: str email: EmailStr is_active: bool = True is_superuser: bool = False class UserCreate(UserBase): """User creation model""" password: str = Field(..., min_length=6, max_length=100) class UserLogin(BaseModel): """User login model""" username: str password: str class User(UserBase): """User model for responses""" id: str created_at: Optional[datetime] = None class Config: from_attributes = True class UserInDB(User): """User model with database fields""" hashed_password: str class Token(BaseModel): """Token response model""" access_token: str token_type: str = "bearer" expires_in: int