Spaces:
Sleeping
Sleeping
File size: 1,630 Bytes
690700c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
"""
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
|