fix: 用专用权限收窄经理 AP 访问(09-07-manager-ap-access-scope)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s

这个提交包含在:
2026-09-08 07:21:37 +08:00
父节点 99167127b5
当前提交 58dcee08f7
共修改 18 个文件,包含 410 行新增和 8 行删除
@@ -0,0 +1,33 @@
# AP 全量读取最小收窄方案(专用权限修订已批准)
## 1. 读取授权
获批修订:新增专用权限 `finance.ledger.view`,仅授予 ceo、finance、finance_mgr;两个 AP GET 及前端入口统一只检查此权限。manager 不授予;不存在 CEO 角色特判,旧付款管理、复核、风险和支付权限均不再独立授予 AP 读取。既有应急 admin 通配符语义不变。
前后端各有静态 ROLE_PERMISSIONS,需要同步三类角色和相关测试,不是只改服务端三行。无数据库权限迁移,不授予 CEO 写权限,不按人员账号特判,不采用 manager deny-list。AP 导出仍使用原有独立权限。
## 2. 接入范围
- `server/src/routes/apOperations.js`:两个 GET 共用收紧后的守卫,数据查询之前拒绝。功能门禁先后顺序保持现状。
- `client/src/auth/permissions.ts`:集中表达 AP 全量读取判据;不修改通用付款复核判据或其他角色权限集合。
- `client/src/router/index.tsx`、AP 页面入口及服务端 `workspaceSettings`:只同步 AP 投影,核对移动和桌面入口,不能全局替换相同的旧 permission 数组而误伤付款路由。
- `server/src/routes/exports.js`:现有导出不含复核授权,本轮不更改;验证拒绝和已有正例。
- 不在 AP 中另造“经理相关单据子集”;经理继续通过既有审批/付款复核路径处理职责内工作。若核实必须借 AP 才能完成复核,报告导航依赖并交审,不默认扩充数据范围。
## 3. 验证矩阵
| 身份 | AP 汇总/台账 | 付款复核 | AP 导出 |
| --- | --- | --- | --- |
| employee | 拒绝 | 按现有权限拒绝 | 拒绝 |
| manager,仅复核职责 | 拒绝 | 保留原业务条件 | 拒绝 |
| ceo | 保留全量读取 | 保留原业务条件 | 不新增 |
| finance / finance_mgr | 专用权限允许 | 不改变角色和独立复核条件 | 按既有两项权限 |
| manager+已授权财务角色 | 允许 | 原条件不变 | 按财务授权 |
| 仅系统管理员 | 不新增 | 不新增 | 不新增 |
| 仅持旧付款管理/复核/风险/支付权限 | 拒绝 | 按原权限 | 按既有两项权限 |
API 验证包括数据查询未发生、筛选不绕过;前端验证包括直连、菜单和复核入口。现有经理 AP 拒绝断言保留,必要时拆分用例使后续角色断言真正执行,不以局部通过冒充整个权限审计通过。
## 4. 安全与交付边界
不查询生产日志,不回填历史访问结论。不触碰既有门禁交审文件;若实施必须修改已交审测试,先保存对应增量基线,单独交本 task diff,不混报旧包。实现后独立只读复核,提交、推送和部署继续另行授权。