36 lines
710 B
Python
36 lines
710 B
Python
"""Authentication Pydantic models."""
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class LoginRequest(BaseModel):
|
|
"""Login request model."""
|
|
|
|
login: str = Field(..., pattern=r'^\d{8}$', description="8-значный логин")
|
|
client_ip: str = Field(..., description="IP адрес клиента")
|
|
|
|
|
|
class UserResponse(BaseModel):
|
|
"""User response model."""
|
|
|
|
user_id: str
|
|
login: str
|
|
last_login_at: str
|
|
created_at: str
|
|
|
|
|
|
class LoginResponse(BaseModel):
|
|
"""Login response with JWT token."""
|
|
|
|
access_token: str
|
|
token_type: str = "bearer"
|
|
user: UserResponse
|
|
|
|
|
|
class TokenPayload(BaseModel):
|
|
"""JWT token payload."""
|
|
|
|
user_id: str
|
|
login: str
|
|
exp: int
|