Spaces:
Running
Running
File size: 1,314 Bytes
7ffe51d 9ff393a 7ffe51d 9ff393a 7ffe51d |
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 |
"""Authentication schemas for request/response validation."""
from pydantic import BaseModel, EmailStr, Field
from datetime import datetime
from typing import Optional
class SignupRequest(BaseModel):
email: EmailStr
name: str
password: str = Field(
min_length=8,
max_length=72,
description="Password must be between 8 and 72 characters"
)
class SigninRequest(BaseModel):
"""Request schema for user signin."""
email: EmailStr = Field(..., description="User's email address")
password: str = Field(..., description="User's password")
class UserProfile(BaseModel):
"""User profile response schema."""
id: int
email: str
name: str
created_at: datetime
class Config:
from_attributes = True
class TokenResponse(BaseModel):
"""Response schema for authentication with JWT token."""
access_token: str = Field(..., description="JWT access token")
token_type: str = Field(default="bearer", description="Token type")
expires_in: int = Field(..., description="Token expiration time in seconds")
user: UserProfile
class SignupResponse(BaseModel):
"""Response schema for successful signup."""
id: int
email: str
name: str
created_at: datetime
class Config:
from_attributes = True
|