43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
"""
|
|
Tool_OCR - Authentication Schemas
|
|
"""
|
|
|
|
from typing import Optional
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class LoginRequest(BaseModel):
|
|
"""Login request schema"""
|
|
username: str = Field(..., min_length=3, max_length=50, description="Username")
|
|
password: str = Field(..., min_length=6, description="Password")
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"username": "admin",
|
|
"password": "password123"
|
|
}
|
|
}
|
|
|
|
|
|
class Token(BaseModel):
|
|
"""JWT token response schema"""
|
|
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")
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
|
"token_type": "bearer",
|
|
"expires_in": 3600
|
|
}
|
|
}
|
|
|
|
|
|
class TokenData(BaseModel):
|
|
"""Token payload data"""
|
|
user_id: Optional[int] = None
|
|
username: Optional[str] = None
|