dingdanquanliucheng/backend/app/schemas/auth.py

65 lines
1.4 KiB
Python
Raw Normal View History

"""
认证模块请求/响应模型
定义登录认证相关的请求体和响应体数据模型 auth 路由使用
"""
2026-05-14 10:15:51 +08:00
from pydantic import BaseModel
class LoginRequest(BaseModel):
"""登录请求体,用于用户登录认证。被 POST /api/auth/login 路由使用。"""
2026-05-14 10:15:51 +08:00
username: str
"""用户名"""
2026-05-14 10:15:51 +08:00
password: str
"""密码"""
role_type: str | None = None
"""角色类型,区分不同登录角色(如 admin / sales为空时由后端自动识别"""
2026-05-14 10:15:51 +08:00
class WechatLoginRequest(BaseModel):
"""微信手机号登录请求体,用于微信一键登录。"""
code: str
"""wx.login() 获取的临时登录凭证"""
phone_code: str
"""wx.getPhoneNumber 返回的授权 code新版 API用于换取手机号"""
2026-05-14 13:51:06 +08:00
class UserProfile(BaseModel):
"""用户信息响应体,包含用户基本信息、角色权限和菜单数据。用于登录成功后返回用户画像。"""
2026-05-14 13:51:06 +08:00
user_id: int
"""用户 ID"""
2026-05-14 13:51:06 +08:00
username: str
"""用户名"""
2026-05-14 13:51:06 +08:00
real_name: str
"""真实姓名"""
2026-05-14 13:51:06 +08:00
mobile: str
"""手机号"""
2026-05-14 13:51:06 +08:00
role_id: int
"""角色 ID"""
2026-05-14 13:51:06 +08:00
role_name: str
"""角色名称"""
2026-05-14 13:51:06 +08:00
role_code: str
"""角色编码"""
2026-05-14 13:51:06 +08:00
token: str | None = None
"""JWT 令牌,仅登录时返回"""
2026-05-14 13:51:06 +08:00
menus: list[dict] = []
"""该角色关联的菜单列表"""
2026-05-14 13:51:06 +08:00
permissions: list[str] = []
"""该角色的权限编码列表"""