37 lines
966 B
Python
37 lines
966 B
Python
"""
|
|
认证相关 Schema
|
|
===============
|
|
"""
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class MobileLoginRequest(BaseModel):
|
|
"""手机号登录请求"""
|
|
|
|
mobile: str = Field(..., description="手机号", min_length=11, max_length=20)
|
|
nickname: str | None = Field(None, description="用户昵称", max_length=64)
|
|
|
|
|
|
class UserInfo(BaseModel):
|
|
"""用户信息"""
|
|
|
|
id: str = Field(..., description="用户 ID")
|
|
nickname: str = Field(..., description="用户昵称")
|
|
avatar: str = Field(default="", description="头像 URL")
|
|
|
|
|
|
class LoginResponse(BaseModel):
|
|
"""登录响应"""
|
|
|
|
token: str = Field(..., description="JWT 访问令牌")
|
|
user: UserInfo = Field(..., description="用户信息")
|
|
|
|
|
|
class TokenPayload(BaseModel):
|
|
"""Token 载荷"""
|
|
|
|
sub: str | None = Field(None, description="用户 ID")
|
|
mobile: str | None = Field(None, description="手机号")
|
|
exp: int | None = Field(None, description="过期时间戳")
|