a17f4cc522
- 新增项目成员候选用户接口,避免 PM 读取全局用户列表 - 按项目角色和权限矩阵控制项目管理、成员、中心与审计入口 - 合并侧边栏管理后台入口,统一从项目管理进入成员等模块 - 加强成员管理安全约束,禁止 PM 修改自己、系统管理员或更高权限角色 - 修复多项目角色缓存串用问题,并补充前后端回归测试
22 lines
928 B
TypeScript
22 lines
928 B
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { readFileSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
|
|
const readAuditLogsView = () => readFileSync(resolve(__dirname, "./AuditLogs.vue"), "utf8");
|
|
|
|
describe("audit logs access", () => {
|
|
it("allows only admins or authorized PMs to use audit export", () => {
|
|
const source = readAuditLogsView();
|
|
|
|
expect(source).toContain("const canAccessAuditLogs = computed");
|
|
expect(source).toContain("isSystemAdmin");
|
|
expect(source).toContain("getProjectRole");
|
|
expect(source).toContain("study.currentStudyRole");
|
|
expect(source).toContain('projectRole.value === "PM"');
|
|
expect(source).toContain("roles?.[projectRole.value]?.audit_export?.read");
|
|
expect(source).not.toContain("roles?.PM?.audit_export?.read");
|
|
expect(source).not.toContain('const role = auth.user?.role');
|
|
expect(source).not.toContain('role !== "ADMIN"');
|
|
});
|
|
});
|