Spaces:
Sleeping
Sleeping
| """ | |
| User Models for Authentication | |
| Pydantic models for user registration, login, and responses | |
| """ | |
| from pydantic import BaseModel, EmailStr, Field | |
| from typing import Optional | |
| from datetime import datetime | |
| class UserRegister(BaseModel): | |
| """User registration request""" | |
| email: EmailStr | |
| password: str = Field(..., min_length=6, max_length=100) | |
| full_name: str = Field(..., min_length=2, max_length=100) | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "email": "user@example.com", | |
| "password": "SecurePass123", | |
| "full_name": "John Doe" | |
| } | |
| } | |
| class UserLogin(BaseModel): | |
| """User login request""" | |
| email: EmailStr | |
| password: str | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "email": "user@example.com", | |
| "password": "SecurePass123" | |
| } | |
| } | |
| class UserResponse(BaseModel): | |
| """User response (without password)""" | |
| user_id: str | |
| email: str | |
| full_name: str | |
| created_at: datetime | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "user_id": "abc-123", | |
| "email": "user@example.com", | |
| "full_name": "John Doe", | |
| "created_at": "2025-10-28T20:00:00" | |
| } | |
| } | |
| class Token(BaseModel): | |
| """JWT Token response""" | |
| access_token: str | |
| token_type: str = "bearer" | |
| user: UserResponse | |
| class TokenData(BaseModel): | |
| """Data stored in JWT token""" | |
| user_id: Optional[str] = None | |
| email: Optional[str] = None | |