Pine
|
fc1841dfe6
|
refactor(auth): 管理端清除多身份残留(identities/currentIdentity/selectIdentity/Identity)
- auth.tsx/type 去 identities/currentIdentity 状态与 Identity 类型,role 恒取 user.role
- api/auth.ts 删 selectIdentity、getSavedUser/saveUser 去 identity 字段
- types.ts LoginResponse 去 identities/identity_id/port/identity_name 字段
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-26 19:16:14 +08:00 |
|
Pine
|
1f21978a91
|
feat(profile): 个人中心「绑定小程序」—— 小程序码+扫码确认绑定(自动合并)
- 小程序行加「绑定」按钮 → BindMpDialog(展示bind-start小程序码,轮询确认后刷新)
- auth.ts 加 bindMpStart
|
2026-08-26 12:47:56 +08:00 |
|
Pine
|
044ec4bb81
|
feat(profile): 管理平台个人中心 —— 绑定/解绑 手机号·小程序·微信
- 新增 /settings (个人中心): 展示账号+绑定状态, 绑定手机号(验证码), 解绑 手机/小程序/微信
- auth.ts 加 bindPhone(合并返新令牌)/unbind; 路由+导航项
|
2026-08-26 12:37:09 +08:00 |
|
Pine
|
f03e3a3fed
|
feat(auth): 登录页支持四种登录(账号/短信/微信扫码/小程序扫码)
- 平台登录内嵌四方式Tab,PollingQr 用 @rc-component/qrcode 渲染+轮询
- auth.ts 加 sendCode/phoneLogin/wxQrStart/wxQrPoll/mpQrStart/mpQrPoll;auth.tsx 加 loginWithResponse
- package.json 加 @rc-component/qrcode(锁文件只提交 npm package-lock.json)
|
2026-08-25 22:47:45 +08:00 |
|
Pine
|
6c2bc47882
|
fix(admin-portal): 刷新不丢身份 — 启动还原 saved + /auth/me 重灌权威状态
原启动只还原 username,role/identities/currentIdentity 为 null,刷新后 isAuthed 真但 role 空,
守卫/导航失效。改为:有 token 时先本地还原 saved user(role/identity) 立即可用,再 fetchMe()
从后端还原 identities/当前身份/permissions;getSavedUser 类型补 identity;401 由 client 触发
auth:expired 登出。npm run build 通过。
|
2026-08-24 17:47:51 +08:00 |
|
Pine
|
258bccfad3
|
chore: 初始化云超服运营管理平台(admin-portal)
- 脚手架:Vite6 + React18 + TypeScript(strict) + Tailwind4
- shadcn/ui 基座(依 design/installation.md):components.json + src/components/ui/* + cn(),radix-ui 单片
- 认证:登录(密码+多身份选择 select-identity),lib/auth.tsx(上下文+localStorage)
- RBAC:lib/rbac.tsx 八端口导航过滤 + App.tsx RequireAuth/RoleRoute
- 布局:AppShell(侧边栏+顶栏+身份切换+用户菜单)
- API:client.ts(fetch+token+401登出) + resources.ts(用户/课程/活动/报名/测评/算力/园区)
- 页面:登录/总览 + 用户/课程/活动/报名/测评/算力/园区 7 个管理页(未实现端点优雅降级)
- npm run build 通过;.env.example / README.md / .gitignore
|
2026-08-24 13:07:09 +08:00 |
|