47 lines
1.0 KiB
Python
47 lines
1.0 KiB
Python
"""
|
|
认证相关的Pydantic模型
|
|
"""
|
|
from pydantic import BaseModel, Field
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
|
|
|
|
class SendCodeRequest(BaseModel):
|
|
"""发送验证码请求"""
|
|
phone: str = Field(..., min_length=11, max_length=11, description="手机号")
|
|
|
|
|
|
class SendCodeResponse(BaseModel):
|
|
"""发送验证码响应"""
|
|
success: bool
|
|
message: str
|
|
expires_in: Optional[int] = None
|
|
|
|
|
|
class LoginRequest(BaseModel):
|
|
"""登录请求"""
|
|
phone: str = Field(..., min_length=11, max_length=11, description="手机号")
|
|
code: str = Field(..., min_length=6, max_length=6, description="验证码")
|
|
|
|
|
|
class UserInfo(BaseModel):
|
|
"""用户信息"""
|
|
id: int
|
|
phone: str
|
|
created_at: datetime
|
|
last_login_at: Optional[datetime] = None
|
|
|
|
|
|
class LoginResponse(BaseModel):
|
|
"""登录响应"""
|
|
success: bool
|
|
token: Optional[str] = None
|
|
user: Optional[UserInfo] = None
|
|
message: Optional[str] = None
|
|
|
|
|
|
class RefreshTokenResponse(BaseModel):
|
|
"""刷新Token响应"""
|
|
success: bool
|
|
token: str
|