新增项目管理员角色权限控制

This commit is contained in:
wkc
2026-07-01 16:12:03 +08:00
parent 6c70149e0c
commit 64ddc362e3
33 changed files with 727 additions and 92 deletions

View File

@@ -0,0 +1,19 @@
# manager 项目权限后端实施计划
## 目标
新增 `manager` 角色并建立统一项目访问控制:`admin` 保持最高权限,`manager` 可查看全部项目但只能操作本人创建的项目,普通角色只能查看和操作本人创建的项目。
## 实施范围
1. 新增 `ProjectAccessScope``CcdiProjectAccessService`,统一提供项目读权限、操作权限、流水/文件/证据等资源反查项目后的权限校验。
2. 项目列表、历史项目列表、状态统计统一走后端 scope`admin/manager` 查询全部,普通角色限定 `create_by = 当前用户名`
3. `CcdiProjectVO` 返回 `ownedByCurrentUser``canOperate`,供前端展示只读态。
4. 项目详情、结果总览、流水明细、专项排查、关系图谱、资金图谱、证据、上传记录、模型参数等接口在服务调用前执行项目读/写权限校验。
5. 项目更新、删除、归档、重新分析、上传、拉取本行信息、文件删除、参数保存、证据保存、手工资金流保存均执行 `assertCanOperate`
6. 资金图谱手工资金流保持现有全局资金图逻辑,不新增 `project_id`,不按项目过滤手工边;保存时仅用当前项目 ID 做操作权限校验。
7. 新增幂等 SQL `sql/migration/2026-07-01-add-manager-role-project-scope.sql`,按 `role_key='manager'` 新增/更新角色并授予项目菜单权限,不自动绑定用户。
## 验证
执行 `mvn -pl ccdi-project -am compile -DskipTests`重点验证权限服务、Controller 注入、Mapper 参数和 MyBatis XML 条件编译通过。

View File

@@ -0,0 +1,18 @@
# manager 项目权限前端实施计划
## 目标
前端根据后端返回的 `canOperate` 呈现项目只读体验:他人项目可查看结果和明细,不展示或禁用上传、参数配置、重新分析、归档、证据确认、手工资金流保存等写入入口。
## 实施范围
1. 项目列表使用 `canOperate` 控制按钮:他人项目仅显示查看入口,重新分析和归档仅在 `canOperate=true` 且状态允许时展示。
2. 他人项目从列表进入详情时默认打开 `overview`;详情页路由指向上传或参数配置时自动切换到结果总览。
3. 详情页将 `canOperate` 传给上传、参数配置、结果总览、证据确认、项目分析图谱等子组件。
4. 上传数据、拉取本行信息、征信导入、文件删除、参数保存、证据确认、手工资金流新增保存均在前端方法入口做只读拦截。
5. 关系图谱、资金图谱、资金边流水明细请求携带当前 `projectId` 作为后端读权限校验上下文;资金图谱手工资金流数据仍保持全局图谱逻辑,不按项目过滤。
6. 新建项目、历史导入和快捷创建入口继续按 `ccdi:project:add` 菜单权限展示。
## 验证
执行 `source ~/.nvm/nvm.sh && cd ruoyi-ui && nvm use && npm run build:prod`,并通过真实浏览器检查列表按钮、详情只读页签、上传/参数/证据/图谱写入入口和查询接口行为。

View File

@@ -0,0 +1,22 @@
# manager 项目权限实施记录
## 修改内容
- 新增后端项目访问控制服务,统一判断 `admin / manager / 创建者` 的项目读权限,以及 `admin / 创建者` 的项目操作权限。
- 项目列表、历史项目、状态统计按当前用户角色自动限制范围,并在项目 VO 中返回 `ownedByCurrentUser``canOperate`
- 项目列表、项目详情、流水明细、上传记录、证据读取等基础读接口不再依赖 `ccdi:project:list/query` 菜单权限,避免普通角色登录后被菜单权限提前拦截。
- 为项目详情、结果总览、流水明细、专项排查、关系图谱、资金图谱、上传、参数、证据、重新分析等接口补充项目级读写权限校验。
- 新增 `manager` 角色幂等 SQL`role_key='manager'` 维护角色并授予项目相关菜单权限,不绑定具体用户。
- 前端项目列表、详情页、上传、参数、证据、项目分析图谱按 `canOperate` 展示只读态,并在写入方法入口拦截。
## 影响范围
- `manager` 可查看所有项目,操作他人项目会被后端拒绝;操作本人项目仍受菜单权限控制。
- 普通角色可进入项目列表并查看本人创建的项目,直接传入他人项目或资源 ID 会被拒绝;写操作仍受菜单权限和项目归属共同约束。
- 资金图谱手工资金流保持全局资金图逻辑,不新增项目归属字段,也不按项目过滤手工边;保存入口只使用当前项目 ID 做操作权限校验。
## 验证记录
- 后端计划执行:`mvn -pl ccdi-project -am compile -DskipTests`
- 前端计划执行:`source ~/.nvm/nvm.sh && cd ruoyi-ui && nvm use && npm run build:prod`
- 浏览器计划验证admin、manager、普通角色的列表范围、详情只读态、按钮显隐和接口拒绝行为。