feat(#1718): 微信扫码登录前端——昵称引导页 + 设置页微信绑定/解绑 #1720
Reference in New Issue
Block a user
Delete Branch "feat/1718-wechat-login-frontend"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
需求(Issue #1718)
改动
pages/auth/WechatOnboarding.tsx(新):路由/welcome/wechat,昵称必填 1-20 字,提交调PATCH /auth/me后落登录态进首页ProtectedRoute:profile_completed === false的已登录用户一律重定向到/welcome/wechat,未填昵称无法进入任何 /app 页面WechatCallback.tsx改造:is_new_user或profile_completed===false→ 跳昵称引导页;老用户回来源页。移除强制绑手机弹窗(手机号绑定挪设置页)WechatBindCallback.tsx(新):路由/auth/wechat/bind/callback,已登录用户设置页扫码后用 code 调绑定接口,成功回设置页并提示profile/Settings.tsx:①昵称保存接通PATCH /auth/me(原来提示「暂未开放」);②新增「微信账号」卡片:未绑定显示「绑定微信」→ 扫码授权;已绑定显示状态+微信昵称+「解绑」(二次确认);微信占位邮箱(@wechat.local)友好展示updateProfile/getWechatBindUrl/bindWechat/unbindWechat;User/UserResponse 类型扩展wechat_bound/wechat_nickname/avatar_url/phone/profile_completed依赖的后端接口(后端 #1718 配套)
前端按以下契约开发,需后端补齐:
PATCH /auth/me(body:{display_name},返回{user: {...}})——更新昵称,同时将用户标记为 profile_completed=trueGET /auth/me响应增加wechat_bound: bool、wechat_nickname: string、profile_completed: bool(微信新用户自动建号时为 false)GET /auth/wechat/bind/url→{auth_url, state}(已登录,绑定场景)POST /auth/wechat/bind(body:{code, state})→{success, user};openid 已被其他账号占用需返回明确错误DELETE /auth/wechat/bind→{success}(解绑;若账号无邮箱/手机/密码等其他登录方式应拒绝并提示)测试
WechatCallback.test.tsx重写 6 例:老用户跳首页、新用户跳引导页、profile_completed=false 跳引导页、state 不匹配报错、接口失败报错、loadingWechatOnboarding.test.tsx新增 5 例:未登录回登录页、已完善跳 dashboard、填写昵称提交成功跳转、空昵称校验拦截、提交失败不跳转Settings.test.tsx重写 4 例:用户信息展示、未绑定点绑定走授权、已绑定解绑确认调接口、改昵称保存调更新接口🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1720 已关闭或合并,对应的预览环境已被清理。