feat(account): 实现平台账号管理功能
- 新增平台账号列表查询接口(自动筛选超级管理员和平台用户) - 新增密码修改和状态切换专用接口 - 增强角色分配功能,支持空数组清空所有角色 - 新增超级管理员保护机制,禁止分配角色 - 新增完整的集成测试和OpenSpec规范文档
This commit is contained in:
@@ -49,7 +49,7 @@ TBD - created by archiving change add-role-permission-system. Update Purpose aft
|
||||
|
||||
### Requirement: 角色类型与用户类型匹配
|
||||
|
||||
系统 SHALL 在分配角色时校验角色类型与用户类型的匹配关系:平台用户只能分配平台角色,代理/企业账号只能分配客户角色,超级管理员和个人客户不分配角色。
|
||||
系统 SHALL 在分配角色时校验角色类型与用户类型的匹配关系:平台用户只能分配平台角色,代理/企业账号只能分配客户角色,超级管理员不允许分配角色。分配角色时支持传递空数组以清空账号的所有角色。
|
||||
|
||||
#### Scenario: 平台用户分配平台角色
|
||||
- **WHEN** 为平台用户(user_type=2)分配平台角色(role_type=1)
|
||||
@@ -71,9 +71,17 @@ TBD - created by archiving change add-role-permission-system. Update Purpose aft
|
||||
- **WHEN** 为企业账号(user_type=4)分配客户角色(role_type=2)
|
||||
- **THEN** 系统允许分配
|
||||
|
||||
#### Scenario: 超级管理员分配角色
|
||||
#### Scenario: 超级管理员禁止分配角色
|
||||
- **WHEN** 尝试为超级管理员(user_type=1)分配任何角色
|
||||
- **THEN** 系统拒绝分配并返回错误"超级管理员不需要分配角色"
|
||||
- **THEN** 系统拒绝分配并返回错误 CodeInvalidParam "超级管理员不允许分配角色"
|
||||
|
||||
#### Scenario: 清空账号所有角色
|
||||
- **WHEN** 调用分配角色接口时传递空数组 `role_ids: []`
|
||||
- **THEN** 系统删除该账号的所有现有角色关联,返回成功
|
||||
|
||||
#### Scenario: 传递空数组给超级管理员
|
||||
- **WHEN** 为超级管理员(user_type=1)调用分配角色接口且传递空数组
|
||||
- **THEN** 系统拒绝操作并返回错误"超级管理员不允许分配角色"
|
||||
|
||||
---
|
||||
|
||||
@@ -221,3 +229,23 @@ TBD - created by archiving change add-role-permission-system. Update Purpose aft
|
||||
|
||||
---
|
||||
|
||||
### Requirement: 角色分配灵活性
|
||||
|
||||
系统 SHALL 支持灵活的角色分配操作:允许传递空数组清空所有角色,允许传递部分角色ID进行增量分配,不强制要求账号必须拥有角色。
|
||||
|
||||
#### Scenario: 创建无角色的平台用户
|
||||
- **WHEN** 创建平台用户账号后未分配任何角色
|
||||
- **THEN** 系统允许该状态,账号可正常登录但无权限访问受保护资源
|
||||
|
||||
#### Scenario: 清空代理账号的唯一角色
|
||||
- **WHEN** 代理账号(user_type=3)拥有一个角色,调用分配角色接口传递空数组
|
||||
- **THEN** 系统清空该代理账号的角色,账号变为无角色状态
|
||||
|
||||
#### Scenario: 增量分配角色
|
||||
- **WHEN** 账号已有角色A,调用分配角色接口传递 `role_ids: [B, C]`
|
||||
- **THEN** 系统跳过已存在的关联,只新增角色B和C(如果尚未分配)
|
||||
|
||||
#### Scenario: 角色分配验证规则调整
|
||||
- **WHEN** 前端调用角色分配接口
|
||||
- **THEN** `role_ids` 字段验证规则为 `omitempty`(可选),允许传递 null、空数组或角色ID列表
|
||||
|
||||
|
||||
Reference in New Issue
Block a user