@yss123/cage-admin 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -28,7 +28,7 @@ pnpm exec cage bootstrap --credentials-file .cage/admin-credentials.json
28
28
  pnpm dev
29
29
  ```
30
30
 
31
- 初始凭据只交付到新的受限文件,交付后移除;不要提交到 Git 或贴入日志。服务启动不会自动重置管理员密码。管理员再配置用户、部门、角色、业务命令能力与数据范围;新增业务能力不会自动授予生产角色。
31
+ 初始凭据只交付到新的受限文件,交付后移除;不要提交到 Git 或贴入日志。首次初始化的超级管理员自动拥有当前和以后新增的全部能力以及本租户全部数据范围;普通角色仍需显式授权。已有用户时初始化不会升级角色或重置密码,服务启动也不会自动重置密码。
32
32
 
33
33
  | 公开入口 | 用途 |
34
34
  | --- | --- |
@@ -38,11 +38,11 @@ pnpm dev
38
38
  | `noEscalation`、`noEscalationViaRoles`、`noWiderScope`、`knownCapability` | 组织授权命令使用的防提权与能力目录约束 |
39
39
  | `hashPassword` | 服务端密码处理辅助函数,不在浏览器调用或存储明文 |
40
40
 
41
- 角色选人、菜单显示和中文标签不授予权限。最终写入通过命令执行,授权变更也受当前操作者的能力与范围约束。`grantAll/grantAllToSuperadmin` 是显式管理工具,不应在日常启动或升级中自动执行。
41
+ 角色选人、菜单显示和中文标签不授予权限。最终写入通过命令执行,授权变更也受当前操作者的能力与范围约束。`grantAll/grantAllToSuperadmin` 是显式管理工具,初始超级管理员不需要调用它们;不应在日常启动或升级中自动执行。
42
42
 
43
43
  ## 中文管理界面
44
44
 
45
- 启动 API 后访问 `/admin/`。页面包含审批待办、用户与部门、角色与授权、操作审计、异步任务和第三方同步。角色页按业务对象分组展示权限,支持中文或代码搜索;操作权限即时保存,数据范围与审批额度需要点击各自的保存按钮。中文显示不改变真实权限标识,也不会自动给角色增加权限。
45
+ 启动 API 后访问 `/admin/`。页面包含审批待办、用户与部门、角色与授权、操作审计、异步任务和第三方同步。角色页按业务对象分组展示权限,支持中文或代码搜索;操作权限即时保存,数据范围需要点击保存按钮。中文显示不改变真实权限标识,也不会自动给普通角色增加权限。
46
46
 
47
47
  业务聚合和命令应填写中文 `description`。项目根目录 `cage.config.json` 的 `graph.labels` 同时用于图谱和系统管理,无需再维护一份翻译:
48
48
 
@@ -71,7 +71,7 @@ pnpm dev
71
71
 
72
72
  `ui/src/app` 负责页面组合,`ui/src/modules` 按管理功能组织,`ui/src/shared` 放请求、标签和 DOM 组件。界面由 TypeScript 编译成原生浏览器模块,不要求业务项目使用特定前端框架。执行 `pnpm build` 同时构建接口与界面;发布时分发 `ui/dist`、HTML 和 CSS,不直接执行 TypeScript 源码。
73
73
 
74
- - [完整使用说明](https://github.com/shunshunyue/cage/blob/main/docs/manual/使用说明.md)
74
+ - [当前开发指南与 Agent 流程](https://github.com/shunshunyue/cage/blob/main/docs/development/README.md)
75
75
  - [框架源码与范例](https://github.com/shunshunyue/cage)
76
76
  - [问题反馈](https://github.com/shunshunyue/cage/issues)
77
77
 
@@ -31,7 +31,7 @@ export declare function bootstrapOrg(k: Kernel, opts?: {
31
31
  /** 显式授权维护工具;普通启动和生产角色不应自动调用。 */
32
32
  /**
33
33
  * 显式补齐指定角色尚未拥有的目录能力,返回本次新增数量。
34
- * 已有授权参数保持不变;新授出的 approve 能力附带这里的初始化额度。
34
+ * 已有授权参数保持不变;新增能力不附带业务参数。
35
35
  * 每次调用通过系统身份执行领域命令,属于高权限维护操作;多次命令并非整批单一事务。
36
36
  * 调用方必须确认目标角色与租户,不应作为生产角色自动获取新增业务能力的入口。
37
37
  */
package/dist/bootstrap.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * 本模块使用受信任的系统身份,调用者应明确决定何时执行,不能把它暴露为普通业务自助授权接口。
5
5
  */
6
6
  // 显式初始化组织:建根部门、超级管理员角色和初始管理员账号。
7
- // 超级管理员只是一个拥有全部能力、范围为 all 的角色,是数据而不是代码里的特例。
7
+ // 初始化写入受控通配标记;有效角色会随当前能力目录取得完整授权。
8
8
  import { randomBytes } from 'node:crypto';
9
9
  import { DEFAULT_TENANT, systemCtx } from '@yss123/cage-kernel';
10
10
  import { sql } from 'kysely';
@@ -13,7 +13,7 @@ import { sql } from 'kysely';
13
13
  * 此身份仅服务于受控初始化,不是前端可自行构造的管理员豁免。
14
14
  */
15
15
  function bootstrapCtx(k, tenantId) {
16
- return systemCtx({ kind: 'system', name: 'bootstrap', tenantId, capabilities: k.catalogCaps() });
16
+ return systemCtx({ kind: 'system', name: 'bootstrap', tenantId, capabilities: [...k.catalogCaps(), '*'] });
17
17
  }
18
18
  /**
19
19
  * 首次创建根部门、超级管理员角色及账号,并在同一事务中设置能力、范围和密码。
@@ -34,9 +34,7 @@ export async function bootstrapOrg(k, opts = {}) {
34
34
  const execute = (command, input) => k.executeIn(tx, command, input, ctx, 0);
35
35
  const root = await execute('Dept.create', { name: opts.rootDeptName ?? '总部', code: 'root' });
36
36
  const role = await execute('Role.create', { code: 'superadmin', name: '超级管理员' });
37
- for (const cap of k.catalogCaps()) {
38
- await execute('Role.grantCapability', { id: role.id, capability: cap, params: cap.endsWith('.approve') ? { ceiling: 1_000_000_000 } : undefined });
39
- }
37
+ await execute('Role.grantCapability', { id: role.id, capability: '*' });
40
38
  await execute('Role.setScope', { id: role.id, aggregate: '*', combinator: 'all' });
41
39
  const username = opts.adminUsername ?? 'admin';
42
40
  const password = opts.adminPassword ?? randomBytes(9).toString('base64url');
@@ -51,7 +49,7 @@ export async function bootstrapOrg(k, opts = {}) {
51
49
  /** 显式授权维护工具;普通启动和生产角色不应自动调用。 */
52
50
  /**
53
51
  * 显式补齐指定角色尚未拥有的目录能力,返回本次新增数量。
54
- * 已有授权参数保持不变;新授出的 approve 能力附带这里的初始化额度。
52
+ * 已有授权参数保持不变;新增能力不附带业务参数。
55
53
  * 每次调用通过系统身份执行领域命令,属于高权限维护操作;多次命令并非整批单一事务。
56
54
  * 调用方必须确认目标角色与租户,不应作为生产角色自动获取新增业务能力的入口。
57
55
  */
@@ -63,7 +61,7 @@ export async function grantAll(k, roleId, tenantId = DEFAULT_TENANT) {
63
61
  for (const cap of k.catalogCaps()) {
64
62
  if (have.has(cap))
65
63
  continue;
66
- await k.execute('Role.grantCapability', { id: roleId, capability: cap, params: cap.endsWith('.approve') ? { ceiling: 1_000_000_000 } : undefined }, ctx);
64
+ await k.execute('Role.grantCapability', { id: roleId, capability: cap }, ctx);
67
65
  n++;
68
66
  }
69
67
  return n;
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,19 @@ import { type Constraint } from '@yss123/cage-kernel';
10
10
  * 未知能力返回 CAGE-GRANT-003;该检查不负责判断操作者是否拥有这个能力。
11
11
  */
12
12
  export declare const knownCapability: () => Constraint;
13
- /** 防提权:不能授出自己没有的能力点;数值参数(额度)不能超过自己的 */
13
+ /**
14
+ * 保护带全部能力标记的角色。普通角色管理员不能维护它;超级管理员不能移除通配标记或停用该角色,
15
+ * 避免初始角色失效后无法通过普通授权恢复。受信任系统身份仍可执行维护;角色名称不决定特权。
16
+ */
17
+ export declare const protectSuperadminRole: () => Constraint;
18
+ /**
19
+ * 保护已分配全部能力角色的用户,防止普通用户管理员通过重置密码或更换角色接管管理员。
20
+ * 在当前事务、当前租户及操作者可见范围中读取用户已有的角色;停用角色仍受保护。
21
+ * 超级管理员不能停用自己,也不能移除自己最后一个有效的全部能力角色,避免误操作后无法继续授权。
22
+ * 角色不可见或不存在时无法确认目标用户是否受保护,拒绝操作;系统身份可执行维护。
23
+ */
24
+ export declare const protectSuperadminUser: () => Constraint;
25
+ /** 防提权:不能授出自己没有的能力点;数值参数不能超过自己的。 */
14
26
  /**
15
27
  * 构造直接授权的防提权约束:操作者必须已有目标能力。
16
28
  * 输入与操作者参数在同一键上都为 number 时,新值不能更大;其他参数类型不在这里比较。
@@ -20,9 +20,59 @@ function ownWidth(ctx, aggregate) {
20
20
  */
21
21
  export const knownCapability = () => ({
22
22
  name: 'knownCapability',
23
- check: (_role, _ctx, input, meta) => meta.catalog().includes(input.capability) ? ok() : violation(`[CAGE-GRANT-003] 能力点 ${input.capability} 不在能力目录里`),
23
+ check: (_role, _ctx, input, meta) => (input.capability === '*' ? _ctx.actor?.kind === 'system' && _ctx.actor.id === 'system:bootstrap' : meta.catalog().includes(input.capability))
24
+ ? ok() : violation(`[CAGE-GRANT-003] 能力点 ${input.capability} 不在能力目录里`),
24
25
  });
25
- /** 防提权:不能授出自己没有的能力点;数值参数(额度)不能超过自己的 */
26
+ /**
27
+ * 保护带全部能力标记的角色。普通角色管理员不能维护它;超级管理员不能移除通配标记或停用该角色,
28
+ * 避免初始角色失效后无法通过普通授权恢复。受信任系统身份仍可执行维护;角色名称不决定特权。
29
+ */
30
+ export const protectSuperadminRole = () => ({
31
+ name: 'protectSuperadminRole',
32
+ check: (role, ctx, input, meta) => {
33
+ if (!role.capabilities?.some((entry) => entry.capability === '*') || ctx.actor?.kind === 'system')
34
+ return ok();
35
+ if (!ctx.capabilities.has('*'))
36
+ return violation('[CAGE-GRANT-001] 只有超级管理员可以维护超级管理员角色');
37
+ if (meta.capability === 'Role.archive' || (meta.capability === 'Role.revokeCapability' && input.capability === '*'))
38
+ return violation('[CAGE-GRANT-001] 不能停用超级管理员角色或移除全部能力标记');
39
+ return ok();
40
+ },
41
+ });
42
+ /**
43
+ * 保护已分配全部能力角色的用户,防止普通用户管理员通过重置密码或更换角色接管管理员。
44
+ * 在当前事务、当前租户及操作者可见范围中读取用户已有的角色;停用角色仍受保护。
45
+ * 超级管理员不能停用自己,也不能移除自己最后一个有效的全部能力角色,避免误操作后无法继续授权。
46
+ * 角色不可见或不存在时无法确认目标用户是否受保护,拒绝操作;系统身份可执行维护。
47
+ */
48
+ export const protectSuperadminUser = () => ({
49
+ name: 'protectSuperadminUser',
50
+ check: async (user, ctx, input, meta) => {
51
+ if (ctx.actor?.kind === 'user' && ctx.userId === user.id && ctx.capabilities.has('*')) {
52
+ if (meta.capability === 'User.disable')
53
+ return violation('[CAGE-GRANT-001] 超级管理员不能停用自己的账号');
54
+ if (meta.capability === 'User.assignRoles') {
55
+ for (const id of input.roleIds) {
56
+ const role = await meta.load('Role', id);
57
+ if (role?.status === 'active' && role.capabilities?.some((entry) => entry.capability === '*'))
58
+ return ok();
59
+ }
60
+ return violation('[CAGE-GRANT-001] 超级管理员不能移除自己的全部能力角色');
61
+ }
62
+ }
63
+ if (ctx.capabilities.has('*') || ctx.actor?.kind === 'system')
64
+ return ok();
65
+ for (const id of user.roleIds ?? []) {
66
+ const role = await meta.load('Role', id);
67
+ if (!role)
68
+ return violation('[CAGE-GRANT-001] 无法确认用户角色,不能维护该账号');
69
+ if (role?.capabilities?.some((entry) => entry.capability === '*'))
70
+ return violation('[CAGE-GRANT-001] 只有超级管理员可以维护超级管理员账号');
71
+ }
72
+ return ok();
73
+ },
74
+ });
75
+ /** 防提权:不能授出自己没有的能力点;数值参数不能超过自己的。 */
26
76
  /**
27
77
  * 构造直接授权的防提权约束:操作者必须已有目标能力。
28
78
  * 输入与操作者参数在同一键上都为 number 时,新值不能更大;其他参数类型不在这里比较。
@@ -1 +1 @@
1
- {"version":3,"file":"constraints.js","sourceRoot":"","sources":["../../src/domain/constraints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constraints.js","sourceRoot":"","sources":["../../src/domain/constraints.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  import { scrypt, randomBytes } from 'node:crypto';
10
10
  import { aggregate, command, enumOf, fail, id, json, list, ref, scope, states, text, COMBINATORS, } from '@yss123/cage-kernel';
11
11
  import { z } from 'zod';
12
- import { noEscalation, noEscalationViaRoles, noWiderScope, knownCapability } from './constraints.js';
12
+ import { noEscalation, noEscalationViaRoles, noWiderScope, knownCapability, protectSuperadminRole, protectSuperadminUser } from './constraints.js';
13
13
  // ---------------- 部门 ----------------
14
14
  /**
15
15
  * 部门组织单元,active 可维护,archived 为终态。
@@ -66,7 +66,7 @@ export const Role = aggregate('Role', {
66
66
  fields: {
67
67
  code: text(64).unique(),
68
68
  name: text(100),
69
- /** 能力点及参数,例如 { capability: 'PurchaseOrder.approve', params: { ceiling: 50000 } } */
69
+ /** 能力点及可选参数;初始化写入的 * 标记代表当前目录的全部能力。 */
70
70
  capabilities: list({ capability: text(200), params: json().optional() }),
71
71
  /** 各聚合上的数据范围;aggregate 为 * 表示所有聚合 */
72
72
  scopes: list({ aggregate: text(100), combinator: enumOf(...COMBINATORS), deptIds: list(id()).optional() }),
@@ -194,7 +194,7 @@ export const assignRoles = command(User, {
194
194
  from: 'active',
195
195
  to: 'active',
196
196
  input: z.object({ id: z.string().uuid(), roleIds: z.array(z.string().uuid()).max(50) }),
197
- constraints: [noEscalationViaRoles()],
197
+ constraints: [protectSuperadminUser(), noEscalationViaRoles()],
198
198
  reads: { roles: Role },
199
199
  handler: async (_o, input, deps) => {
200
200
  for (const rid of input.roleIds) {
@@ -208,11 +208,11 @@ export const assignRoles = command(User, {
208
208
  /**
209
209
  * 将 active 用户转为 disabled,仅声明状态变化;认证和上下文刷新据状态拒绝后续使用。
210
210
  */
211
- export const disableUser = command(User, { name: 'disable', description: '停用用户', from: 'active', to: 'disabled', handler: () => ({}) });
211
+ export const disableUser = command(User, { name: 'disable', description: '停用用户', from: 'active', to: 'disabled', constraints: [protectSuperadminUser()], handler: () => ({}) });
212
212
  /**
213
213
  * 将 disabled 用户恢复为 active,不重置原有角色、资料或密码。
214
214
  */
215
- export const enableUser = command(User, { name: 'enable', description: '启用用户', from: 'disabled', to: 'active', handler: () => ({}) });
215
+ export const enableUser = command(User, { name: 'enable', description: '启用用户', from: 'disabled', to: 'active', constraints: [protectSuperadminUser()], handler: () => ({}) });
216
216
  /** 密码哈希:scrypt$盐$哈希(纯计算,不做 IO) */
217
217
  /**
218
218
  * 以随机 16 字节盐调用异步 scrypt,派生 32 字节结果并编码为认证使用的三段字符串。
@@ -236,6 +236,7 @@ export const setPassword = command(User, {
236
236
  from: 'active',
237
237
  to: 'active',
238
238
  input: z.object({ id: z.string().uuid(), password: z.string().min(8).max(200) }),
239
+ constraints: [protectSuperadminUser()],
239
240
  handler: async (_o, input) => ({ passwordHash: await hashPassword(input.password) }),
240
241
  });
241
242
  // ---------------- 角色命令 ----------------
@@ -278,7 +279,7 @@ export const grantCapability = command(Role, {
278
279
  from: 'active',
279
280
  to: 'active',
280
281
  input: z.object({ id: z.string().uuid(), capability: z.string().min(1).max(200), params: z.record(z.string(), z.unknown()).optional() }),
281
- constraints: [knownCapability(), noEscalation()],
282
+ constraints: [protectSuperadminRole(), knownCapability(), noEscalation()],
282
283
  handler: (role, input) => ({
283
284
  capabilities: [
284
285
  ...role.capabilities.filter((c) => c.capability !== input.capability),
@@ -296,6 +297,7 @@ export const revokeCapability = command(Role, {
296
297
  from: 'active',
297
298
  to: 'active',
298
299
  input: z.object({ id: z.string().uuid(), capability: z.string().min(1).max(200) }),
300
+ constraints: [protectSuperadminRole()],
299
301
  handler: (role, input) => ({ capabilities: role.capabilities.filter((c) => c.capability !== input.capability) }),
300
302
  });
301
303
  /**
@@ -314,7 +316,7 @@ export const setScope = command(Role, {
314
316
  combinator: z.enum(['all', 'self', 'dept', 'deptSubtree', 'deptSet']).nullable(),
315
317
  deptIds: z.array(z.string().uuid()).optional(),
316
318
  }),
317
- constraints: [noWiderScope()],
319
+ constraints: [protectSuperadminRole(), noWiderScope()],
318
320
  handler: (role, input) => {
319
321
  const rest = role.scopes.filter((s) => s.aggregate !== input.aggregate);
320
322
  if (input.combinator === null)
@@ -328,5 +330,5 @@ export const setScope = command(Role, {
328
330
  /**
329
331
  * 将 active 角色停用为 archived;保留历史授权数据,角色的后续有效性由上下文加载按状态判断。
330
332
  */
331
- export const archiveRole = command(Role, { name: 'archive', description: '停用角色', from: 'active', to: 'archived', handler: () => ({}) });
333
+ export const archiveRole = command(Role, { name: 'archive', description: '停用角色', from: 'active', to: 'archived', constraints: [protectSuperadminRole()], handler: () => ({}) });
332
334
  //# sourceMappingURL=org.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/domain/org.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/domain/org.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yss123/cage-admin",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "description": "组织模型声明与 /admin 系统管理",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,8 +25,8 @@
25
25
  "fastify": "^5.6.0",
26
26
  "zod": "^4.1.5",
27
27
  "kysely": "^0.28.5",
28
- "@yss123/cage-ai-protocol": "0.3.2",
29
- "@yss123/cage-kernel": "0.3.2"
28
+ "@yss123/cage-ai-protocol": "0.4.0",
29
+ "@yss123/cage-kernel": "0.4.0"
30
30
  },
31
31
  "license": "MIT",
32
32
  "repository": {
@@ -51,7 +51,7 @@ export async function renderRoles(main) {
51
51
  },
52
52
  }, h('span', { class: 'role-avatar' }, icon('shield')), h('span', { class: 'role-item-copy' }, h('strong', {}, role.name), h('small', {}, role.code)), role.status !== 'active'
53
53
  ? badge('停用')
54
- : h('span', { class: 'role-item-count' }, role.capabilities.length))));
54
+ : h('span', { class: 'role-item-count' }, role.capabilities.some((item) => item.capability === '*') ? state.catalog.capabilities.length : role.capabilities.length))));
55
55
  if (!visible.length)
56
56
  list.append(h('p', { class: 'list-empty' }, '没有匹配的角色'));
57
57
  }
@@ -100,7 +100,8 @@ export async function renderRoles(main) {
100
100
  roles = roles.map((item) => (item.id === updated.id ? updated : item));
101
101
  renderList();
102
102
  };
103
- const countText = h('strong', {}, String(role.capabilities.length));
103
+ const allCapabilities = role.capabilities.some((item) => item.capability === '*');
104
+ const countText = h('strong', {}, String(allCapabilities ? state.catalog.capabilities.length : role.capabilities.length));
104
105
  const summary = h('div', { class: 'role-summary' }, h('div', { class: 'role-title' }, h('span', { class: 'role-emblem' }, icon('shield')), h('div', {}, h('div', { class: 'title-line' }, h('h2', {}, role.name), badge(role.status === 'active' ? '使用中' : '已停用', role.status === 'active' ? 'green' : 'neutral')), h('p', {}, h('code', {}, role.code), h('span', {}, '· 按角色统一管理访问权限')))), h('div', { class: 'permission-total' }, countText, h('span', {}, '项已授权')));
105
106
  const body = h('div', { class: 'role-tab-body' });
106
107
  const buttons = ['permissions', 'scopes'].map((key) => h('button', {
@@ -143,6 +144,10 @@ export async function renderRoles(main) {
143
144
  */
144
145
  function renderGroups() {
145
146
  const granted = new Map(role.capabilities.map((item) => [item.capability, item.params]));
147
+ // 通配角色始终拥有当前目录中的能力,不能通过逐项开关修改。
148
+ if (allCapabilities)
149
+ for (const item of state.catalog.capabilities)
150
+ granted.set(item.capability, {});
146
151
  const search = query.trim().toLowerCase();
147
152
  const groups = new Map();
148
153
  const visible = state.catalog.capabilities.filter((item) => {
@@ -160,7 +165,7 @@ export async function renderRoles(main) {
160
165
  }
161
166
  grid.replaceChildren();
162
167
  filteredCount.textContent = `显示 ${visible.length} 项权限`;
163
- countText.textContent = String(role.capabilities.length);
168
+ countText.textContent = String(allCapabilities ? state.catalog.capabilities.length : role.capabilities.length);
164
169
  // 客户业务排在前面,框架自带的组织与运维权限放在后面,先回答业务人员最关心的问题。
165
170
  const builtIn = new Set(['Dept', 'User', 'Role', 'system']);
166
171
  const ordered = [...groups].sort(([a], [b]) => Number(builtIn.has(a)) - Number(builtIn.has(b)));
@@ -176,12 +181,12 @@ export async function renderRoles(main) {
176
181
  grid.append(emptyState('没有找到匹配的权限', '换一个关键词,或调整上方授权筛选。', 'search'));
177
182
  }
178
183
  /**
179
- * 构建能力开关及可选额度编辑器,按钮依据角色状态和当前操作者能力启用。
180
- * 切换失败恢复旧勾选值,成功更新角色快照;额度保存保留已有参数并替换 ceiling。
184
+ * 构建能力开关,按钮依据角色状态和当前操作者能力启用。
185
+ * 切换失败恢复旧勾选值,成功更新角色快照;通配角色的能力由目录自动展开。
181
186
  */
182
187
  function permissionRow(capability, granted) {
183
188
  const checked = granted.has(capability.capability);
184
- const authorized = role.status === 'active' &&
189
+ const authorized = !allCapabilities && role.status === 'active' &&
185
190
  can(checked ? 'Role.revokeCapability' : 'Role.grantCapability') &&
186
191
  (checked || can(capability.capability));
187
192
  const mode = invocation(capability);
@@ -215,35 +220,6 @@ export async function renderRoles(main) {
215
220
  : title,
216
221
  }, toggle, h('span', { class: 'checkbox-visual' }, icon('check')), h('span', { class: 'permission-copy' }, h('span', { class: 'permission-name' }, title), h('code', {}, capability.capability))), mode &&
217
222
  h('span', { class: 'invocation-badge', title: '配置此权限后,仍需通过对应流程或外部接口调用' }, mode));
218
- if (checked &&
219
- (capability.capability.endsWith('.approve') ||
220
- granted.get(capability.capability)?.ceiling !== undefined)) {
221
- const ceiling = h('input', {
222
- type: 'number',
223
- min: 0,
224
- step: 'any',
225
- placeholder: '请设置额度',
226
- value: String(granted.get(capability.capability)?.ceiling ?? ''),
227
- required: true,
228
- disabled: !can('Role.grantCapability') || !can(capability.capability) || role.status !== 'active',
229
- 'aria-label': `${title}额度上限`,
230
- });
231
- const save = h('button', { type: 'submit', class: 'small', disabled: ceiling.disabled }, '保存额度');
232
- row.append(h('form', {
233
- class: 'limit-form',
234
- onsubmit: async (event) => {
235
- event.preventDefault();
236
- const updated = await run(() => api('POST', `/api/role/${role.id}/grant-capability`, {
237
- capability: capability.capability,
238
- params: { ...granted.get(capability.capability), ceiling: Number(ceiling.value) },
239
- }), '额度已保存', save);
240
- if (updated) {
241
- updateRole(updated);
242
- renderGroups();
243
- }
244
- },
245
- }, h('span', {}, '额度上限'), ceiling, save));
246
- }
247
223
  return row;
248
224
  }
249
225
  renderGroups();
@@ -264,9 +240,9 @@ export async function renderRoles(main) {
264
240
  * 提交 null 删除显式配置,成功后重画详情以反映真实服务端结果。
265
241
  */
266
242
  function scopeCard(aggregate) {
267
- const current = role.scopes.find((scope) => scope.aggregate === aggregate.name);
268
- const inherited = role.scopes.find((scope) => scope.aggregate === '*');
269
- const editable = role.status === 'active' && can('Role.setScope');
243
+ const current = allCapabilities ? { aggregate: aggregate.name, combinator: 'all', deptIds: undefined } : role.scopes.find((scope) => scope.aggregate === aggregate.name);
244
+ const inherited = allCapabilities ? { aggregate: '*', combinator: 'all' } : role.scopes.find((scope) => scope.aggregate === '*');
245
+ const editable = !allCapabilities && role.status === 'active' && can('Role.setScope');
270
246
  const usable = state.catalog.combinators.filter((kind) => aggregate.name === '*' ||
271
247
  kind === 'all' ||
272
248
  (kind === 'self' ? aggregate.scope.ownerField : aggregate.scope.deptField));