DCL7 精简文档并统一中文口径
这个提交包含在:
@@ -0,0 +1,52 @@
|
||||
# 权限直连审计记录
|
||||
|
||||
**文档状态**:当前审计证据,用于 R3 发布前权限直连审计。
|
||||
**对应 Issue**:`issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv` / R3。
|
||||
|
||||
## 1. 审计目标
|
||||
|
||||
本轮验证 A7 的导航收口没有掩盖服务端授权缺口。直连页面或 API 时,用户只能访问其角色授权或数据范围内的内容;前端隐藏不能替代服务端权限。
|
||||
|
||||
## 2. 自动化覆盖
|
||||
|
||||
新增 `client/tests/e2e/permission-direct-access.spec.ts`,覆盖:
|
||||
|
||||
- 页面直连:`/budgets`、`/ap-operations`、`/system/integrations/erp`、`/travel-requests`、`/invoice-pool`、`/contracts-registry`、`/payment-batches`。
|
||||
- API 直连:`/api/budgets`、`/api/ap-operations`、`/api/payment-batches`、`/api/integrations/erp/master-data/status`、`/api/invoice-pool`、`/api/travel-requests`、`/api/contracts-registry`、`/api/auth/wecom/config`。
|
||||
- 角色:普通员工、主管、财务、财务主管、管理员。
|
||||
|
||||
## 3. 权限矩阵
|
||||
|
||||
| 角色 | 直连路径/API | 期望 | 自动化结论 |
|
||||
| --- | --- | --- | --- |
|
||||
| 普通员工 | 预算、AP、ERP、付款批次 | 页面进入 `/403`;API 返回 `403` 或功能门禁 `409`,不得返回业务数据 | 通过 |
|
||||
| 普通员工 | 差旅、票据、合同台账 | 可以进入自助或范围型页面;接口必须收敛到本人、本人票据、本人项目或功能门禁 | 通过 |
|
||||
| 主管 | AP、ERP、付款批次 | 页面进入 `/403`;API 返回 `403` 或功能门禁 `409`,不得返回业务数据 | 通过 |
|
||||
| 主管 | 预算 | 允许访问角色授权范围 | 通过 |
|
||||
| 财务 | 票据、付款/AP | 允许访问财务授权范围或功能门禁 | 通过 |
|
||||
| 财务 | ERP 管理 | 页面和 API 均拒绝 | 通过 |
|
||||
| 财务主管/管理员 | ERP 或系统配置 | 允许访问授权范围;配置探活不得返回 `secret/password/token` 明文字段 | 通过 |
|
||||
|
||||
说明:AP 和付款批次接口存在 feature gate;当功能门禁先返回 `409` 时,结论是“未泄露数据”,但不等同于证明权限拒绝。
|
||||
|
||||
## 4. 验证命令
|
||||
|
||||
```bash
|
||||
cd client && npm run typecheck
|
||||
cd client && npm run build
|
||||
cd client && npm run test:e2e -- permission-direct-access.spec.ts settings-governance.spec.ts login-portal-ux.spec.ts --workers=1
|
||||
python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv
|
||||
git diff --check
|
||||
```
|
||||
|
||||
## 5. 执行结果
|
||||
|
||||
2026-05-10 已执行:
|
||||
|
||||
- `cd client && npm run typecheck`:通过。
|
||||
- `cd client && npm run build`:通过。
|
||||
- `cd client && npm run test:e2e -- permission-direct-access.spec.ts settings-governance.spec.ts login-portal-ux.spec.ts --workers=1`:本地服务启动后通过,10 passed。
|
||||
- `python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv`:通过。
|
||||
- `git diff --check`:通过。
|
||||
|
||||
第一次 E2E 执行失败原因为 `http://127.0.0.1:3000` 未启动;启动本地 OA 服务后重跑通过,未发现权限泄漏。R3 可进入完成状态,下一步才允许进入 R4 只读部署预检。
|
||||
在新工单中引用
屏蔽一个用户