feat(auth): 补齐密码登录通道并修复登录态从未写入的缺口
【严重缺口修复】P2(验证码)/ P2Q(一键登录)此前只 navigate('P3'),从不写登录态——
全项目唯一写 token 的地方是微信链路。微信入口一旦摘除,isTokenValid 恒为 false,
每次冷启动都会把用户打回登录页。现三条通道均接入 useAuth().login()。
【新增通道】P1 主通道改为「验证码登录」,「一键登录」为次,新增「密码登录」(P2P):
- P2P 手机号 + 密码登录;P2R 设置 / 重置密码(同页两阶段:验证手机号 → 设新密码,
成功后直接下发登录态,用户无需再登录一次)
- 设置页新增 /settings/password 修改密码,改完强制重登
【密码规则】8–20 位且需含字母和数字,规则计算统一放在 api.ts 的 validatePassword /
validatePasswordConfirm,错误码 → 文案映射放在 constants 的 PASSWORD_RULE_LABEL,
按联合类型 PasswordRuleError 建模,新增成员漏配文案会被测试拦下。
【微信入口摘除】按产品决定(丁总 2026-09-14)前端不做 QQ / 微信登录:
P1Login 移除微信按钮、滑块验证与注销弹窗;P2W / B1 页面、useWechatLogin 状态机、
wechat-sdk 及三个接口函数全部保留待启用,接入路线见 微信登录接入方案.md。
【去重公共件】新增 PasswordField(密码输入 + 明文切换)、useAgreementGate(协议门卫,
此前在 3 个页面被逐字复制)、utils/validators(手机号 / 验证码规则的单一来源)。
【测试】新增 src/__tests__/password.test.ts(24 例)。全套 6 套 45 例通过,
tsc --noEmit 0 错误,eslint . 0 问题,check-routes 67 路由 0 失效跳转。
|