feat(filelib-web): 授权面板表格化:搜索、添加弹窗、权限下拉与成员跳转

- GrantsPanel 重写为表格:顶部左侧授权成员搜索框(名称/id/类型过滤),
  右侧「添加授权」弹窗(类型 + 主体搜索选择 + 权限);行内权限下拉
  直接改级(复用 PUT upsert),操作列删除;成员单元格跳转用户管理
  (?q= 过滤)或 Group 管理(?select= 选中)。
- grantService: GrantDto 增加 principalName,list/put/force 三处统一
  批量回填(用户 displayName / 组 name),前端不再只显示裸 id。
- 用户管理页加过滤框并从 ?q= 初始化;GroupAdmin 支持 ?select= 直达。
- 测试:resetDb 补 MemberGroup 三表清理(全局表不被 org/user 级联清到,
  此前跨用例污染导致级联软删用例断言失败);cph_hub_test 补 migrate。
- 顺带合并 types.ts 里重复的 Grant 声明(interface 合并残留)。
This commit is contained in:
ymy
2026-07-27 15:13:57 +08:00
parent a4c07d1a5d
commit 0dd2ae347e
6 changed files with 335 additions and 99 deletions
+6
View File
@@ -45,6 +45,12 @@ export async function resetDb(): Promise<void> {
// two tables have no FK to Project and must be cleared explicitly.
prisma.permissionGrant.deleteMany(),
prisma.permissionSettings.deleteMany(),
// MemberGroup is global (ADR-0028): no FK to the org/user roots, so the
// cascade above never reaches it. Clear explicitly — closure/membership
// first (they FK into MemberGroup), groups last.
prisma.memberGroupClosure.deleteMany(),
prisma.memberGroupMembership.deleteMany(),
prisma.memberGroup.deleteMany(),
prisma.user.deleteMany(),
prisma.organization.deleteMany(),
]);