docs(spec): 归档 force-password-change + 同步首登改密主 spec
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
5685a5ce42
commit
950e13a4a8
@ -42,3 +42,28 @@
|
||||
#### Scenario: 超管查看全量数据
|
||||
- **WHEN** 超管执行列表查询
|
||||
- **THEN** 系统不做 data_scope 部门过滤,返回全量数据
|
||||
|
||||
### Requirement: 待改密门禁
|
||||
系统 SHALL 对 `must_change_password=true` 的用户实施门禁:除「修改本人密码」与「登出」接口外,其余接口返回 403(提示需先修改密码)。
|
||||
|
||||
#### Scenario: 待改密访问受保护接口
|
||||
- **WHEN** 待改密用户请求除改密/登出外的任意接口
|
||||
- **THEN** 系统返回 403 并提示需先修改密码
|
||||
|
||||
#### Scenario: 待改密改密与登出放行
|
||||
- **WHEN** 待改密用户请求修改密码或登出接口
|
||||
- **THEN** 系统放行
|
||||
|
||||
### Requirement: 登录返回待改密标志
|
||||
登录成功 SHALL 在响应中返回 mustChangePassword,值为该用户是否待改密。
|
||||
|
||||
#### Scenario: 待改密登录
|
||||
- **WHEN** 待改密用户登录成功
|
||||
- **THEN** 响应含 mustChangePassword=true
|
||||
|
||||
### Requirement: 改密清除待改密
|
||||
用户修改本人密码成功 SHALL 清除其待改密标记。
|
||||
|
||||
#### Scenario: 改密后清除
|
||||
- **WHEN** 待改密用户修改密码成功
|
||||
- **THEN** 其 must_change_password 置为 false
|
||||
|
||||
21
openspec/specs/frontend/AD/force-password-change/spec.md
Normal file
21
openspec/specs/frontend/AD/force-password-change/spec.md
Normal file
@ -0,0 +1,21 @@
|
||||
# Force Password Change Specification
|
||||
|
||||
## Purpose
|
||||
|
||||
定义首登强制改密页面的行为:登录后对待改密用户强制跳转改密页,改密成功后重新登录。
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: 强制跳转改密页
|
||||
登录后若 mustChangePassword=true,前端 SHALL 强制跳转改密页并禁止进入其它页面(路由守卫拦截)。
|
||||
|
||||
#### Scenario: 待改密强制跳转
|
||||
- **WHEN** 用户登录成功且 mustChangePassword=true
|
||||
- **THEN** 前端跳转到改密页,访问其它路由被重定向回改密页
|
||||
|
||||
### Requirement: 改密后重新登录
|
||||
改密页 SHALL 提供修改密码表单(新密码);提交成功后清空会话并跳转登录页重新登录。
|
||||
|
||||
#### Scenario: 改密成功
|
||||
- **WHEN** 用户在改密页提交新密码成功
|
||||
- **THEN** 前端清空会话并跳转登录页,用户用新密码重新登录
|
||||
@ -69,3 +69,14 @@
|
||||
#### Scenario: 解锁用户
|
||||
- **WHEN** 管理员对某锁定用户执行解锁
|
||||
- **THEN** 系统解锁该用户并刷新列表
|
||||
|
||||
### Requirement: 创建用户指定强制改密
|
||||
新增用户表单 SHALL 提供「首登强制改密」配置项(默认勾选);提交时将其作为 mustChangePassword 传入。
|
||||
|
||||
#### Scenario: 默认强制改密
|
||||
- **WHEN** 管理员新增用户保持「首登强制改密」勾选并提交
|
||||
- **THEN** 创建的该用户 mustChangePassword=true
|
||||
|
||||
#### Scenario: 关闭强制改密
|
||||
- **WHEN** 管理员新增用户取消勾选「首登强制改密」
|
||||
- **THEN** 创建的该用户 mustChangePassword=false
|
||||
|
||||
@ -43,11 +43,11 @@
|
||||
- **THEN** 系统返回 403
|
||||
|
||||
### Requirement: 认证接口
|
||||
系统 SHALL 提供登录、刷新令牌、登出接口;登录需 tenantCode+username+password,返回 access token 与 refresh token。
|
||||
系统 SHALL 提供登录、刷新令牌、登出接口;登录需 tenantCode+username+password,返回 access token、refresh token 与 mustChangePassword(待改密标志)。
|
||||
|
||||
#### Scenario: 登录成功
|
||||
- **WHEN** 用户提供正确的租户、账号与密码
|
||||
- **THEN** 返回 access token(2h 过期)与 refresh token(7d 过期)
|
||||
- **THEN** 返回 access token(2h 过期)、refresh token(7d 过期)与 mustChangePassword(待改密为 true,否则 false)
|
||||
|
||||
#### Scenario: 刷新令牌
|
||||
- **WHEN** access 过期后客户端携带 refresh token 请求刷新
|
||||
|
||||
@ -63,6 +63,21 @@ user 实体 SHALL 通过 `status` 字段支持启用/停用(管理员手动启
|
||||
- **WHEN** 停用用户(status=disabled)尝试登录
|
||||
- **THEN** 系统拒绝登录并提示账号已停用
|
||||
|
||||
### Requirement: 待改密标记
|
||||
user 实体 SHALL 通过 `must_change_password`(布尔,默认 false)标记待改密状态:管理员重置密码、租户初始化下发随机密码、创建用户(默认)时置 true;创建用户时管理员可显式关闭;用户自行改密成功后置 false。
|
||||
|
||||
#### Scenario: 临时密码置标记
|
||||
- **WHEN** 管理员重置密码或初始化租户下发临时密码
|
||||
- **THEN** 该用户 must_change_password 为 true
|
||||
|
||||
#### Scenario: 创建用户默认强制改密
|
||||
- **WHEN** 管理员创建用户(未显式关闭「首登强制改密」)
|
||||
- **THEN** 该用户 must_change_password 为 true;显式关闭则为 false
|
||||
|
||||
#### Scenario: 改密清除标记
|
||||
- **WHEN** 用户修改本人密码成功
|
||||
- **THEN** 该用户 must_change_password 置为 false
|
||||
|
||||
### Requirement: 字典实体扩展
|
||||
dict_type 实体 SHALL 新增 built_in 字段(布尔,标记内置字典类型);dict_item 实体 SHALL 新增 built_in(布尔,标记内置字典项)与 color_type(字符串,取值 primary/success/warning/danger/info,可空)字段,用于前端标签渲染与内置保护。
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user