- 后端新增 /api/auth/wechat-login 接口,用手机号自动匹配系统用户 - 登录时自动绑定 open_id,为微信订阅消息通知做好准备 - 小程序登录页替换为微信手机号授权按钮,保留密码登录为备用入口 - 新增 get_user_by_mobile 按手机号查询用户方法 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
65 lines
1.4 KiB
Python
65 lines
1.4 KiB
Python
"""
|
||
认证模块请求/响应模型
|
||
|
||
定义登录认证相关的请求体和响应体数据模型,供 auth 路由使用。
|
||
"""
|
||
|
||
from pydantic import BaseModel
|
||
|
||
|
||
class LoginRequest(BaseModel):
|
||
"""登录请求体,用于用户登录认证。被 POST /api/auth/login 路由使用。"""
|
||
|
||
username: str
|
||
"""用户名"""
|
||
|
||
password: str
|
||
"""密码"""
|
||
|
||
role_type: str | None = None
|
||
"""角色类型,区分不同登录角色(如 admin / sales),为空时由后端自动识别"""
|
||
|
||
|
||
class WechatLoginRequest(BaseModel):
|
||
"""微信手机号登录请求体,用于微信一键登录。"""
|
||
|
||
code: str
|
||
"""wx.login() 获取的临时登录凭证"""
|
||
|
||
phone_code: str
|
||
"""wx.getPhoneNumber 返回的授权 code(新版 API,用于换取手机号)"""
|
||
|
||
|
||
class UserProfile(BaseModel):
|
||
"""用户信息响应体,包含用户基本信息、角色权限和菜单数据。用于登录成功后返回用户画像。"""
|
||
|
||
user_id: int
|
||
"""用户 ID"""
|
||
|
||
username: str
|
||
"""用户名"""
|
||
|
||
real_name: str
|
||
"""真实姓名"""
|
||
|
||
mobile: str
|
||
"""手机号"""
|
||
|
||
role_id: int
|
||
"""角色 ID"""
|
||
|
||
role_name: str
|
||
"""角色名称"""
|
||
|
||
role_code: str
|
||
"""角色编码"""
|
||
|
||
token: str | None = None
|
||
"""JWT 令牌,仅登录时返回"""
|
||
|
||
menus: list[dict] = []
|
||
"""该角色关联的菜单列表"""
|
||
|
||
permissions: list[str] = []
|
||
"""该角色的权限编码列表"""
|