Spaces:
Sleeping
Sleeping
| """ | |
| 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 | |