1.7 KiB
1.7 KiB
1. 数据模型与迁移
- 1.1 Prisma:
User新增mustChangePassword(Boolean,非空,默认 false,snake_case 映射must_change_password) - 1.2 生成并部署 migration(
migrate dev --create-only+migrate deploy)
2. 认证核心(标志 + 门禁)
- 2.1
checkUserActive改为返回{ active, mustChangePassword },user-state 缓存对象加mustChangePassword - 2.2
JwtAuthGuard加待改密门禁:待改密且非PATCH /auth/me/password→ 403「请先修改初始密码」 - 2.3
loginTenant与自动探测登录响应返回mustChangePassword - 2.4
changePassword成功时清must_change_password
3. 触发置标记
- 3.1
CreateUserDto新增可选mustChangePassword(默认 true),users.createUser按入参落库 - 3.2
users.resetPassword置mustChangePassword=true - 3.3
initTenant新增forcePasswordChange选项;createTenant传 true、seed传 false
4. 前端强制流程
- 4.1
authstore 新增mustChangePassword状态并持久化(sessionStorage) - 4.2
api/auth.ts的LoginResult类型扩展mustChangePassword - 4.3 路由守卫拦截:待改密且目标非改密页/登出时重定向改密页
- 4.4 新增独立改密页(不进布局),改密成功后
reset()+ 跳登录页 - 4.5 用户创建表单新增「首登强制改密」开关(默认勾选),
api/user.ts的UserUpsertData扩展mustChangePassword并在提交时传参
5. 验证
- 5.1 后端 build + 单测 + e2e 通过
- 5.2 前端 type-check 通过
- 5.3 冒烟测试:创建用户(待改密)→ 登录返回 mustChangePassword=true → 其它接口 403 → 改密成功 → 重新登录正常