eeshanyaj's picture
Initial deployment to HuggingFace Spaces
690700c
raw
history blame
1.63 kB
"""
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