@neohm/nestend 5.0.1 → 6.0.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.
Files changed (227) hide show
  1. package/README.md +34 -18
  2. package/dist/admin/controllers/admin.api.key.controller.d.ts +5 -0
  3. package/dist/admin/controllers/admin.api.key.controller.d.ts.map +1 -1
  4. package/dist/admin/controllers/admin.api.key.controller.js +22 -2
  5. package/dist/admin/controllers/admin.api.key.controller.js.map +1 -1
  6. package/dist/admin/controllers/admin.permission.controller.d.ts +17 -0
  7. package/dist/admin/controllers/admin.permission.controller.d.ts.map +1 -0
  8. package/dist/admin/controllers/admin.permission.controller.js +125 -0
  9. package/dist/admin/controllers/admin.permission.controller.js.map +1 -0
  10. package/dist/admin/controllers/admin.scope.controller.d.ts.map +1 -1
  11. package/dist/admin/controllers/admin.scope.controller.js +1 -1
  12. package/dist/admin/controllers/admin.scope.controller.js.map +1 -1
  13. package/dist/admin/controllers/system.role.controller.d.ts +17 -1
  14. package/dist/admin/controllers/system.role.controller.d.ts.map +1 -1
  15. package/dist/admin/controllers/system.role.controller.js +13 -4
  16. package/dist/admin/controllers/system.role.controller.js.map +1 -1
  17. package/dist/admin/dtos/add.api.key.dto.d.ts +1 -0
  18. package/dist/admin/dtos/add.api.key.dto.d.ts.map +1 -1
  19. package/dist/admin/dtos/add.api.key.dto.js +12 -0
  20. package/dist/admin/dtos/add.api.key.dto.js.map +1 -1
  21. package/dist/admin/dtos/add.permission.dto.d.ts +8 -0
  22. package/dist/admin/dtos/add.permission.dto.d.ts.map +1 -0
  23. package/dist/admin/dtos/add.permission.dto.js +53 -0
  24. package/dist/admin/dtos/add.permission.dto.js.map +1 -0
  25. package/dist/admin/dtos/add.system.role.dto.d.ts +3 -0
  26. package/dist/admin/dtos/add.system.role.dto.d.ts.map +1 -1
  27. package/dist/admin/dtos/add.system.role.dto.js +38 -1
  28. package/dist/admin/dtos/add.system.role.dto.js.map +1 -1
  29. package/dist/admin/dtos/api.key.roles.dto.d.ts +4 -0
  30. package/dist/admin/dtos/api.key.roles.dto.d.ts.map +1 -0
  31. package/dist/admin/dtos/api.key.roles.dto.js +30 -0
  32. package/dist/admin/dtos/api.key.roles.dto.js.map +1 -0
  33. package/dist/admin/dtos/permission.list.dto.d.ts +4 -0
  34. package/dist/admin/dtos/permission.list.dto.d.ts.map +1 -0
  35. package/dist/admin/dtos/permission.list.dto.js +8 -0
  36. package/dist/admin/dtos/permission.list.dto.js.map +1 -0
  37. package/dist/admin/es6.classes.d.ts +9 -4
  38. package/dist/admin/es6.classes.d.ts.map +1 -1
  39. package/dist/admin/es6.classes.js +14 -0
  40. package/dist/admin/es6.classes.js.map +1 -1
  41. package/dist/admin/libraries/api.key.data.processor.d.ts +1 -0
  42. package/dist/admin/libraries/api.key.data.processor.d.ts.map +1 -1
  43. package/dist/admin/libraries/api.key.data.processor.js +23 -1
  44. package/dist/admin/libraries/api.key.data.processor.js.map +1 -1
  45. package/dist/admin/libraries/api.key.list.processor.d.ts.map +1 -1
  46. package/dist/admin/libraries/api.key.list.processor.js +18 -1
  47. package/dist/admin/libraries/api.key.list.processor.js.map +1 -1
  48. package/dist/admin/libraries/api.key.roles.data.processor.d.ts +15 -0
  49. package/dist/admin/libraries/api.key.roles.data.processor.d.ts.map +1 -0
  50. package/dist/admin/libraries/api.key.roles.data.processor.js +49 -0
  51. package/dist/admin/libraries/api.key.roles.data.processor.js.map +1 -0
  52. package/dist/admin/libraries/client.membership.data.processor.d.ts.map +1 -1
  53. package/dist/admin/libraries/client.membership.data.processor.js +4 -1
  54. package/dist/admin/libraries/client.membership.data.processor.js.map +1 -1
  55. package/dist/admin/libraries/client.user.data.processor.d.ts.map +1 -1
  56. package/dist/admin/libraries/client.user.data.processor.js +5 -2
  57. package/dist/admin/libraries/client.user.data.processor.js.map +1 -1
  58. package/dist/admin/libraries/permission.data.processor.d.ts +16 -0
  59. package/dist/admin/libraries/permission.data.processor.d.ts.map +1 -0
  60. package/dist/admin/libraries/permission.data.processor.js +68 -0
  61. package/dist/admin/libraries/permission.data.processor.js.map +1 -0
  62. package/dist/admin/libraries/permission.list.processor.d.ts +11 -0
  63. package/dist/admin/libraries/permission.list.processor.d.ts.map +1 -0
  64. package/dist/admin/libraries/permission.list.processor.js +42 -0
  65. package/dist/admin/libraries/permission.list.processor.js.map +1 -0
  66. package/dist/admin/libraries/role.list.processor.d.ts.map +1 -1
  67. package/dist/admin/libraries/role.list.processor.js +14 -1
  68. package/dist/admin/libraries/role.list.processor.js.map +1 -1
  69. package/dist/admin/libraries/system.role.data.processor.d.ts +4 -0
  70. package/dist/admin/libraries/system.role.data.processor.d.ts.map +1 -1
  71. package/dist/admin/libraries/system.role.data.processor.js +68 -5
  72. package/dist/admin/libraries/system.role.data.processor.js.map +1 -1
  73. package/dist/admin/utilities/api.key.role.policy.d.ts +4 -0
  74. package/dist/admin/utilities/api.key.role.policy.d.ts.map +1 -0
  75. package/dist/admin/utilities/api.key.role.policy.js +30 -0
  76. package/dist/admin/utilities/api.key.role.policy.js.map +1 -0
  77. package/dist/admin/utilities/scope.grants.d.ts.map +1 -1
  78. package/dist/admin/utilities/scope.grants.js +6 -1
  79. package/dist/admin/utilities/scope.grants.js.map +1 -1
  80. package/dist/admin/utilities/tenant.role.policy.d.ts +4 -5
  81. package/dist/admin/utilities/tenant.role.policy.d.ts.map +1 -1
  82. package/dist/admin/utilities/tenant.role.policy.js +7 -6
  83. package/dist/admin/utilities/tenant.role.policy.js.map +1 -1
  84. package/dist/auth/controllers/auth.controller.d.ts.map +1 -1
  85. package/dist/auth/controllers/auth.controller.js +5 -2
  86. package/dist/auth/controllers/auth.controller.js.map +1 -1
  87. package/dist/auth/controllers/tenant.invitation.controller.d.ts.map +1 -1
  88. package/dist/auth/controllers/tenant.invitation.controller.js +15 -16
  89. package/dist/auth/controllers/tenant.invitation.controller.js.map +1 -1
  90. package/dist/auth/controllers/tenant.member.controller.d.ts.map +1 -1
  91. package/dist/auth/controllers/tenant.member.controller.js +5 -5
  92. package/dist/auth/controllers/tenant.member.controller.js.map +1 -1
  93. package/dist/auth/decorators/api.key.scopes.decorator.d.ts +4 -0
  94. package/dist/auth/decorators/api.key.scopes.decorator.d.ts.map +1 -1
  95. package/dist/auth/decorators/api.key.scopes.decorator.js +7 -1
  96. package/dist/auth/decorators/api.key.scopes.decorator.js.map +1 -1
  97. package/dist/auth/entities/api.key.role.entity.d.ts +13 -0
  98. package/dist/auth/entities/api.key.role.entity.d.ts.map +1 -0
  99. package/dist/auth/entities/api.key.role.entity.js +51 -0
  100. package/dist/auth/entities/api.key.role.entity.js.map +1 -0
  101. package/dist/auth/entities/permission.entity.d.ts +10 -0
  102. package/dist/auth/entities/permission.entity.d.ts.map +1 -0
  103. package/dist/auth/entities/permission.entity.js +43 -0
  104. package/dist/auth/entities/permission.entity.js.map +1 -0
  105. package/dist/auth/entities/role.permission.entity.d.ts +10 -0
  106. package/dist/auth/entities/role.permission.entity.d.ts.map +1 -0
  107. package/dist/auth/entities/role.permission.entity.js +41 -0
  108. package/dist/auth/entities/role.permission.entity.js.map +1 -0
  109. package/dist/auth/entities/system.role.entity.d.ts +6 -0
  110. package/dist/auth/entities/system.role.entity.d.ts.map +1 -1
  111. package/dist/auth/entities/system.role.entity.js +20 -0
  112. package/dist/auth/entities/system.role.entity.js.map +1 -1
  113. package/dist/auth/enums/role.default.enum.d.ts +8 -0
  114. package/dist/auth/enums/role.default.enum.d.ts.map +1 -0
  115. package/dist/auth/enums/role.default.enum.js +13 -0
  116. package/dist/auth/enums/role.default.enum.js.map +1 -0
  117. package/dist/auth/enums/tenant.role.enum.d.ts.map +1 -1
  118. package/dist/auth/enums/tenant.role.enum.js.map +1 -1
  119. package/dist/auth/guards/api.key.guard.d.ts.map +1 -1
  120. package/dist/auth/guards/api.key.guard.js +24 -8
  121. package/dist/auth/guards/api.key.guard.js.map +1 -1
  122. package/dist/auth/middlewares/api.key.middleware.d.ts.map +1 -1
  123. package/dist/auth/middlewares/api.key.middleware.js +1 -1
  124. package/dist/auth/middlewares/api.key.middleware.js.map +1 -1
  125. package/dist/auth/processors/tenant.invitation.data.processor.d.ts +3 -1
  126. package/dist/auth/processors/tenant.invitation.data.processor.d.ts.map +1 -1
  127. package/dist/auth/processors/tenant.invitation.data.processor.js +6 -2
  128. package/dist/auth/processors/tenant.invitation.data.processor.js.map +1 -1
  129. package/dist/auth/processors/tenant.invitation.list.processor.d.ts +2 -1
  130. package/dist/auth/processors/tenant.invitation.list.processor.d.ts.map +1 -1
  131. package/dist/auth/processors/tenant.invitation.list.processor.js +4 -1
  132. package/dist/auth/processors/tenant.invitation.list.processor.js.map +1 -1
  133. package/dist/auth/services/api.key.service.d.ts +10 -2
  134. package/dist/auth/services/api.key.service.d.ts.map +1 -1
  135. package/dist/auth/services/api.key.service.js +84 -7
  136. package/dist/auth/services/api.key.service.js.map +1 -1
  137. package/dist/auth/services/auth.service.d.ts +10 -5
  138. package/dist/auth/services/auth.service.d.ts.map +1 -1
  139. package/dist/auth/services/auth.service.js +63 -49
  140. package/dist/auth/services/auth.service.js.map +1 -1
  141. package/dist/auth/services/role.service.d.ts +3 -1
  142. package/dist/auth/services/role.service.d.ts.map +1 -1
  143. package/dist/auth/services/role.service.js +37 -0
  144. package/dist/auth/services/role.service.js.map +1 -1
  145. package/dist/auth/services/scope.service.d.ts +1 -0
  146. package/dist/auth/services/scope.service.d.ts.map +1 -1
  147. package/dist/auth/services/scope.service.js +32 -0
  148. package/dist/auth/services/scope.service.js.map +1 -1
  149. package/dist/auth/services/tenant.invitation.service.d.ts +6 -4
  150. package/dist/auth/services/tenant.invitation.service.d.ts.map +1 -1
  151. package/dist/auth/services/tenant.invitation.service.js +30 -6
  152. package/dist/auth/services/tenant.invitation.service.js.map +1 -1
  153. package/dist/auth/services/tenant.membership.service.d.ts +3 -1
  154. package/dist/auth/services/tenant.membership.service.d.ts.map +1 -1
  155. package/dist/auth/services/tenant.membership.service.js +22 -3
  156. package/dist/auth/services/tenant.membership.service.js.map +1 -1
  157. package/dist/auth/types/api.key.types.d.ts +6 -0
  158. package/dist/auth/types/api.key.types.d.ts.map +1 -1
  159. package/dist/auth/types/auth.types.d.ts +2 -0
  160. package/dist/auth/types/auth.types.d.ts.map +1 -1
  161. package/dist/auth/types/rbac.types.d.ts +35 -0
  162. package/dist/auth/types/rbac.types.d.ts.map +1 -0
  163. package/dist/auth/types/rbac.types.js +3 -0
  164. package/dist/auth/types/rbac.types.js.map +1 -0
  165. package/dist/auth/utilities/grant.authority.d.ts +14 -0
  166. package/dist/auth/utilities/grant.authority.d.ts.map +1 -0
  167. package/dist/auth/utilities/grant.authority.js +38 -0
  168. package/dist/auth/utilities/grant.authority.js.map +1 -0
  169. package/dist/auth/utilities/role.catalogue.d.ts +10 -0
  170. package/dist/auth/utilities/role.catalogue.d.ts.map +1 -0
  171. package/dist/auth/utilities/role.catalogue.js +81 -0
  172. package/dist/auth/utilities/role.catalogue.js.map +1 -0
  173. package/dist/auth/utilities/role.hierarchy.d.ts +31 -0
  174. package/dist/auth/utilities/role.hierarchy.d.ts.map +1 -0
  175. package/dist/auth/utilities/role.hierarchy.js +149 -0
  176. package/dist/auth/utilities/role.hierarchy.js.map +1 -0
  177. package/dist/auth/utilities/scope.cascade.d.ts +2 -0
  178. package/dist/auth/utilities/scope.cascade.d.ts.map +1 -1
  179. package/dist/auth/utilities/scope.cascade.js +44 -2
  180. package/dist/auth/utilities/scope.cascade.js.map +1 -1
  181. package/dist/auth/utilities/tenant.access.d.ts.map +1 -1
  182. package/dist/auth/utilities/tenant.access.js +10 -3
  183. package/dist/auth/utilities/tenant.access.js.map +1 -1
  184. package/dist/common/subscribers/common.subscriber.d.ts +4 -4
  185. package/dist/common/subscribers/common.subscriber.d.ts.map +1 -1
  186. package/dist/common/subscribers/common.subscriber.js +2 -2
  187. package/dist/common/subscribers/common.subscriber.js.map +1 -1
  188. package/dist/constants/entity.constants.d.ts +3 -0
  189. package/dist/constants/entity.constants.d.ts.map +1 -1
  190. package/dist/constants/entity.constants.js +3 -0
  191. package/dist/constants/entity.constants.js.map +1 -1
  192. package/dist/constants/entity.maps.d.ts +6 -0
  193. package/dist/constants/entity.maps.d.ts.map +1 -1
  194. package/dist/constants/entity.maps.js +6 -0
  195. package/dist/constants/entity.maps.js.map +1 -1
  196. package/dist/index.d.ts +9 -4
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +20 -9
  199. package/dist/index.js.map +1 -1
  200. package/dist/migrations/1749600000004.CreateSysRolesTable.d.ts.map +1 -1
  201. package/dist/migrations/1749600000004.CreateSysRolesTable.js +7 -0
  202. package/dist/migrations/1749600000004.CreateSysRolesTable.js.map +1 -1
  203. package/dist/migrations/1749600000025.CreateSysScopesTable.d.ts +3 -0
  204. package/dist/migrations/1749600000025.CreateSysScopesTable.d.ts.map +1 -1
  205. package/dist/migrations/1749600000025.CreateSysScopesTable.js +16 -0
  206. package/dist/migrations/1749600000025.CreateSysScopesTable.js.map +1 -1
  207. package/dist/migrations/1749600000033.CreateSysPermissionsTable.d.ts +6 -0
  208. package/dist/migrations/1749600000033.CreateSysPermissionsTable.d.ts.map +1 -0
  209. package/dist/migrations/1749600000033.CreateSysPermissionsTable.js +29 -0
  210. package/dist/migrations/1749600000033.CreateSysPermissionsTable.js.map +1 -0
  211. package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.d.ts +6 -0
  212. package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.d.ts.map +1 -0
  213. package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.js +32 -0
  214. package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.js.map +1 -0
  215. package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.d.ts +6 -0
  216. package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.d.ts.map +1 -0
  217. package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.js +38 -0
  218. package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.js.map +1 -0
  219. package/dist/migrations/1749600000036.SeedGlobalAdminRole.d.ts +6 -0
  220. package/dist/migrations/1749600000036.SeedGlobalAdminRole.d.ts.map +1 -0
  221. package/dist/migrations/1749600000036.SeedGlobalAdminRole.js +25 -0
  222. package/dist/migrations/1749600000036.SeedGlobalAdminRole.js.map +1 -0
  223. package/package.json +1 -1
  224. package/dist/auth/enums/role.tier.enum.d.ts +0 -6
  225. package/dist/auth/enums/role.tier.enum.d.ts.map +0 -1
  226. package/dist/auth/enums/role.tier.enum.js +0 -10
  227. package/dist/auth/enums/role.tier.enum.js.map +0 -1
@@ -21,6 +21,7 @@ const tenant_user_entity_1 = require("../entities/tenant.user.entity");
21
21
  const user_entity_1 = require("../entities/user.entity");
22
22
  const user_type_enum_1 = require("../enums/user.type.enum");
23
23
  const access_revocation_1 = require("../utilities/access.revocation");
24
+ const role_catalogue_1 = require("../utilities/role.catalogue");
24
25
  const tenant_access_1 = require("../utilities/tenant.access");
25
26
  const auth_service_1 = require("./auth.service");
26
27
  let TenantMembershipService = TenantMembershipService_1 = class TenantMembershipService {
@@ -86,13 +87,16 @@ let TenantMembershipService = TenantMembershipService_1 = class TenantMembership
86
87
  tenant_id: await this.landingTenant(row),
87
88
  });
88
89
  }
89
- async setMemberRoles(userId, tenantId, roleIds, actorId, guardAdmin = true) {
90
+ async setMemberRoles(userId, tenantId, roleIds, actorId, guardAdmin = true, authority) {
90
91
  await this.assertLiveRoles(roleIds);
91
92
  await this.dataSource.transaction(async (trx) => {
92
93
  await this.requireMembership(trx, userId, tenantId);
94
+ const next = authority
95
+ ? await this.withinAuthority(trx, authority, userId, tenantId, roleIds)
96
+ : roleIds;
93
97
  if (guardAdmin)
94
- await tenant_access_1.TenantAccess.assertAdminRemains(trx, tenantId, userId, roleIds);
95
- await tenant_access_1.TenantAccess.reconcileRoles(trx, userId, tenantId, roleIds, actorId);
98
+ await tenant_access_1.TenantAccess.assertAdminRemains(trx, tenantId, userId, next);
99
+ await tenant_access_1.TenantAccess.reconcileRoles(trx, userId, tenantId, next, actorId);
96
100
  });
97
101
  return tenant_access_1.TenantAccess.activeRoles(this.dataSource.manager, userId, tenantId);
98
102
  }
@@ -106,6 +110,21 @@ let TenantMembershipService = TenantMembershipService_1 = class TenantMembership
106
110
  });
107
111
  return { id: membership.id, deleted: true, deleted_by: actorId };
108
112
  }
113
+ async withinAuthority(manager, authority, userId, tenantId, roleIds) {
114
+ const held = await role_catalogue_1.RoleCatalogue.heldRoleIds(manager, userId, tenantId);
115
+ const visible = (roleId) => !!authority.hierarchy.role(roleId);
116
+ const forbidden = authority.forbiddenChanges(held.filter(visible), roleIds.filter(visible));
117
+ if (forbidden.length)
118
+ throw new common_1.BadRequestException({
119
+ message: 'Validation failed',
120
+ errors: {
121
+ role_ids: forbidden.map((roleId) => `You may not grant or revoke role '${roleId}'`),
122
+ },
123
+ });
124
+ return [
125
+ ...new Set([...roleIds, ...held.filter((roleId) => !visible(roleId))]),
126
+ ];
127
+ }
109
128
  async assertLiveRoles(roleIds) {
110
129
  const unique = [...new Set(roleIds)];
111
130
  if (!unique.length)
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.membership.service.js","sourceRoot":"","sources":["../../../src/auth/services/tenant.membership.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenant.membership.service.js","sourceRoot":"","sources":["../../../src/auth/services/tenant.membership.service.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import { ApiKeyEntity } from '../entities/api.key.entity';
2
2
  import { ScopeEntity } from '../entities/scope.entity';
3
+ import { SystemRoleEntity } from '../entities/system.role.entity';
3
4
  import { TenantEntity } from '../../tenant/entities/tenant.entity';
4
5
  export interface GenerateApiKeyOptions {
5
6
  tenantId?: string;
6
7
  scopeIds?: string[];
8
+ roleIds?: string[];
7
9
  expiresAt?: Date;
8
10
  createdBy?: string;
9
11
  }
@@ -15,12 +17,16 @@ export interface ApiKeyContextValue {
15
17
  apiKey: ApiKeyEntity;
16
18
  tenant?: TenantEntity;
17
19
  scopes: string[];
20
+ roles: string[];
21
+ permissions: string[];
18
22
  }
23
+ export type ApiKeyGrant = Pick<ApiKeyContextValue, 'scopes' | 'roles' | 'permissions'>;
19
24
  export interface ApiKeyAccess {
20
25
  tenant: TenantEntity;
21
26
  }
22
27
  export type ApiKeyDetail = Omit<ApiKeyEntity, 'key_hash'> & {
23
28
  scopes: ScopeEntity[];
29
+ roles: SystemRoleEntity[];
24
30
  key?: string;
25
31
  };
26
32
  export interface KeyScopeGrant {
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.types.d.ts","sourceRoot":"","sources":["../../../src/auth/types/api.key.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAE9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;CACtB;AAGD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IAErB,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAGD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;CACtB;AAOD,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG;IAC1D,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAGF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"api.key.types.d.ts","sourceRoot":"","sources":["../../../src/auth/types/api.key.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAE9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;CACtB;AAGD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IAErB,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAGD,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,kBAAkB,EAClB,QAAQ,GAAG,OAAO,GAAG,aAAa,CACnC,CAAC;AAGF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;CACtB;AAOD,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG;IAC1D,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAGF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -112,6 +112,8 @@ export interface PendingInvitation {
112
112
  export interface CurrentUserProfile {
113
113
  user: UserEntity;
114
114
  roles: SystemRoleEntity[];
115
+ permissions: string[];
116
+ grantable_scopes: string[];
115
117
  organization: string | null;
116
118
  organizations: OrganizationSummary[];
117
119
  invitations: PendingInvitation[];
@@ -1 +1 @@
1
- {"version":3,"file":"auth.types.d.ts","sourceRoot":"","sources":["../../../src/auth/types/auth.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.types.d.ts","sourceRoot":"","sources":["../../../src/auth/types/auth.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export interface HierarchyRole {
2
+ id: string;
3
+ identifier: string;
4
+ name?: string;
5
+ description?: string;
6
+ scope_id: string | null;
7
+ priority: number;
8
+ }
9
+ export interface HierarchyScope {
10
+ id: string;
11
+ identifier: string;
12
+ parent_id: string | null;
13
+ }
14
+ export interface HierarchyGrant {
15
+ role_id: string;
16
+ permission: string;
17
+ scope_id: string;
18
+ }
19
+ export interface RoleCatalogueData {
20
+ roles: HierarchyRole[];
21
+ scopes: HierarchyScope[];
22
+ grants?: HierarchyGrant[];
23
+ }
24
+ export interface EffectiveAccess {
25
+ roles: string[];
26
+ permissions: string[];
27
+ grantable_scopes: string[];
28
+ is_global_admin: boolean;
29
+ }
30
+ export interface RoleCatalogueLoadOptions {
31
+ tenantId?: string | null;
32
+ scopeIds?: Set<string>;
33
+ withPermissions?: boolean;
34
+ }
35
+ //# sourceMappingURL=rbac.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac.types.d.ts","sourceRoot":"","sources":["../../../src/auth/types/rbac.types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAGD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAEhB,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,MAAM,EAAE,cAAc,EAAE,CAAC;IAEzB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;CAC3B;AAGD,MAAM,WAAW,eAAe;IAE9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAGD,MAAM,WAAW,wBAAwB;IAEvC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=rbac.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac.types.js","sourceRoot":"","sources":["../../../src/auth/types/rbac.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { HierarchyRole } from '../types/rbac.types';
2
+ import { RoleHierarchy } from './role.hierarchy';
3
+ export declare class GrantAuthority {
4
+ readonly hierarchy: RoleHierarchy;
5
+ readonly heldRoleIds: string[];
6
+ private readonly impersonating;
7
+ constructor(hierarchy: RoleHierarchy, heldRoleIds: string[], impersonating?: boolean);
8
+ get actsAsGlobalAdmin(): boolean;
9
+ canGrant(roleId: string): boolean;
10
+ grantableRoles(): HierarchyRole[];
11
+ get any(): boolean;
12
+ forbiddenChanges(before: Iterable<string>, after: Iterable<string>): string[];
13
+ }
14
+ //# sourceMappingURL=grant.authority.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grant.authority.d.ts","sourceRoot":"","sources":["../../../src/auth/utilities/grant.authority.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjD,qBAAa,cAAc;IAEvB,QAAQ,CAAC,SAAS,EAAE,aAAa;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFrB,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,MAAM,EAAE,EACb,aAAa,UAAQ;IAGxC,IAAI,iBAAiB,IAAI,OAAO,CAI/B;IAGD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IASjC,cAAc,IAAI,aAAa,EAAE;IAMjC,IAAI,GAAG,IAAI,OAAO,CAEjB;IAGD,gBAAgB,CACd,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACxB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GACtB,MAAM,EAAE;CASZ"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GrantAuthority = void 0;
4
+ class GrantAuthority {
5
+ constructor(hierarchy, heldRoleIds, impersonating = false) {
6
+ this.hierarchy = hierarchy;
7
+ this.heldRoleIds = heldRoleIds;
8
+ this.impersonating = impersonating;
9
+ }
10
+ get actsAsGlobalAdmin() {
11
+ return (this.impersonating || this.hierarchy.holdsGlobalAdmin(this.heldRoleIds));
12
+ }
13
+ canGrant(roleId) {
14
+ if (!this.hierarchy.role(roleId))
15
+ return false;
16
+ return (this.actsAsGlobalAdmin ||
17
+ this.hierarchy.canGrant(this.heldRoleIds, roleId));
18
+ }
19
+ grantableRoles() {
20
+ if (this.actsAsGlobalAdmin)
21
+ return this.hierarchy.allRoles();
22
+ return this.hierarchy.grantableRoles(this.heldRoleIds);
23
+ }
24
+ get any() {
25
+ return this.grantableRoles().length > 0;
26
+ }
27
+ forbiddenChanges(before, after) {
28
+ const was = new Set(before);
29
+ const will = new Set(after);
30
+ const changed = [
31
+ ...[...will].filter((roleId) => !was.has(roleId)),
32
+ ...[...was].filter((roleId) => !will.has(roleId)),
33
+ ];
34
+ return changed.filter((roleId) => !this.canGrant(roleId));
35
+ }
36
+ }
37
+ exports.GrantAuthority = GrantAuthority;
38
+ //# sourceMappingURL=grant.authority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grant.authority.js","sourceRoot":"","sources":["../../../src/auth/utilities/grant.authority.ts"],"names":[],"mappings":";;;AAQA,MAAa,cAAc;IACzB,YACW,SAAwB,EACxB,WAAqB,EACb,gBAAgB,KAAK;QAF7B,cAAS,GAAT,SAAS,CAAe;QACxB,gBAAW,GAAX,WAAW,CAAU;QACb,kBAAa,GAAb,aAAa,CAAQ;IACrC,CAAC;IAEJ,IAAI,iBAAiB;QACnB,OAAO,CACL,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CACxE,CAAC;IACJ,CAAC;IAGD,QAAQ,CAAC,MAAc;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,OAAO,CACL,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAClD,CAAC;IACJ,CAAC;IAGD,cAAc;QACZ,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IAGD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,CAAC;IAGD,gBAAgB,CACd,MAAwB,EACxB,KAAuB;QAEvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG;YACd,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjD,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAClD,CAAC;QACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,CAAC;CACF;AA9CD,wCA8CC"}
@@ -0,0 +1,10 @@
1
+ import { EntityManager } from 'typeorm';
2
+ import { RoleCatalogueLoadOptions } from '../types/rbac.types';
3
+ import { RoleHierarchy } from './role.hierarchy';
4
+ export declare class RoleCatalogue {
5
+ static load(manager: EntityManager, options?: RoleCatalogueLoadOptions): Promise<RoleHierarchy>;
6
+ static heldRoleIds(manager: EntityManager, userId: string, tenantId: string | null | undefined): Promise<string[]>;
7
+ static keyRoleIds(manager: EntityManager, apiKeyId: string): Promise<string[]>;
8
+ private static scopeFilter;
9
+ }
10
+ //# sourceMappingURL=role.catalogue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.catalogue.d.ts","sourceRoot":"","sources":["../../../src/auth/utilities/role.catalogue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAMxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,qBAAa,aAAa;WAKX,IAAI,CACf,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,aAAa,CAAC;WA+CZ,WAAW,CACtB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC;WAUP,UAAU,CACrB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC;mBAQC,WAAW;CAcjC"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RoleCatalogue = void 0;
4
+ const api_key_role_entity_1 = require("../entities/api.key.role.entity");
5
+ const role_permission_entity_1 = require("../entities/role.permission.entity");
6
+ const scope_entity_1 = require("../entities/scope.entity");
7
+ const system_role_entity_1 = require("../entities/system.role.entity");
8
+ const user_role_entity_1 = require("../entities/user.role.entity");
9
+ const role_hierarchy_1 = require("./role.hierarchy");
10
+ const scope_cascade_1 = require("./scope.cascade");
11
+ class RoleCatalogue {
12
+ static async load(manager, options = {}) {
13
+ const [roles, scopes, grants, tenantScopeIds] = await Promise.all([
14
+ manager.find(system_role_entity_1.SystemRoleEntity, {
15
+ where: { is_active: true },
16
+ select: {
17
+ id: true,
18
+ identifier: true,
19
+ name: true,
20
+ description: true,
21
+ scope_id: true,
22
+ priority: true,
23
+ },
24
+ }),
25
+ manager.find(scope_entity_1.ScopeEntity, {
26
+ select: { id: true, identifier: true, parent_id: true },
27
+ }),
28
+ options.withPermissions
29
+ ? manager.find(role_permission_entity_1.RolePermissionEntity, {
30
+ relations: { permission: true },
31
+ })
32
+ : Promise.resolve([]),
33
+ RoleCatalogue.scopeFilter(manager, options),
34
+ ]);
35
+ return new role_hierarchy_1.RoleHierarchy({
36
+ roles: roles.map((role) => ({
37
+ ...role,
38
+ scope_id: role.scope_id ?? null,
39
+ })),
40
+ scopes: scopes.map((scope) => ({
41
+ ...scope,
42
+ parent_id: scope.parent_id ?? null,
43
+ })),
44
+ grants: grants
45
+ .filter((grant) => !!grant.permission)
46
+ .map((grant) => ({
47
+ role_id: grant.role_id,
48
+ permission: grant.permission.identifier,
49
+ scope_id: grant.permission.scope_id,
50
+ })),
51
+ }, tenantScopeIds);
52
+ }
53
+ static async heldRoleIds(manager, userId, tenantId) {
54
+ if (!tenantId)
55
+ return [];
56
+ const grants = await manager.find(user_role_entity_1.UserRoleEntity, {
57
+ where: { user_id: userId, tenant_id: tenantId },
58
+ select: { role_id: true },
59
+ });
60
+ return grants.map((grant) => grant.role_id);
61
+ }
62
+ static async keyRoleIds(manager, apiKeyId) {
63
+ const grants = await manager.find(api_key_role_entity_1.ApiKeyRoleEntity, {
64
+ where: { api_key_id: apiKeyId },
65
+ select: { role_id: true },
66
+ });
67
+ return grants.map((grant) => grant.role_id);
68
+ }
69
+ static async scopeFilter(manager, options) {
70
+ if (options.scopeIds)
71
+ return options.scopeIds;
72
+ if (options.tenantId === undefined)
73
+ return undefined;
74
+ if (!options.tenantId)
75
+ return new Set();
76
+ const scopes = await scope_cascade_1.ScopeCascade.tenantEffective(manager, options.tenantId);
77
+ return new Set(scopes.map((scope) => scope.id));
78
+ }
79
+ }
80
+ exports.RoleCatalogue = RoleCatalogue;
81
+ //# sourceMappingURL=role.catalogue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.catalogue.js","sourceRoot":"","sources":["../../../src/auth/utilities/role.catalogue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { EffectiveAccess, HierarchyRole, HierarchyScope, RoleCatalogueData } from '../types/rbac.types';
2
+ export declare class RoleHierarchy {
3
+ private readonly roles;
4
+ private readonly roleById;
5
+ private readonly roleByIdentifier;
6
+ private readonly scopeById;
7
+ private readonly topPriority;
8
+ private readonly grantsByRole;
9
+ private readonly permissions;
10
+ constructor(data: RoleCatalogueData, tenantScopeIds?: Set<string>);
11
+ role(roleId: string): HierarchyRole | undefined;
12
+ scope(scopeId: string): HierarchyScope | undefined;
13
+ allRoles(): HierarchyRole[];
14
+ effective(heldRoleIds: Iterable<string>): HierarchyRole[];
15
+ static isGlobalAdmin(role: Pick<HierarchyRole, 'identifier'>): boolean;
16
+ holdsGlobalAdmin(heldRoleIds: Iterable<string>): boolean;
17
+ covers(held: HierarchyRole, required: HierarchyRole): boolean;
18
+ satisfiesRole(heldRoleIds: Iterable<string>, identifier: string): boolean;
19
+ coveredRoles(heldRoleIds: Iterable<string>): HierarchyRole[];
20
+ permissionsOf(heldRoleIds: Iterable<string>): Set<string>;
21
+ holdsPermission(heldRoleIds: Iterable<string>, permission: string): boolean;
22
+ isTopRole(role: Pick<HierarchyRole, 'identifier' | 'scope_id' | 'priority'>): boolean;
23
+ administers(heldRoleIds: Iterable<string>, scopeId: string): boolean;
24
+ canGrant(heldRoleIds: Iterable<string>, roleId: string): boolean;
25
+ grantableRoles(heldRoleIds: Iterable<string>): HierarchyRole[];
26
+ hasGrantAuthority(heldRoleIds: Iterable<string>): boolean;
27
+ grantableScopes(heldRoleIds: Iterable<string>): HierarchyScope[];
28
+ access(heldRoleIds: Iterable<string>, actsAsGlobalAdmin?: boolean): EffectiveAccess;
29
+ private scopesWithRoles;
30
+ }
31
+ //# sourceMappingURL=role.hierarchy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.hierarchy.d.ts","sourceRoot":"","sources":["../../../src/auth/utilities/role.hierarchy.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAEf,aAAa,EACb,cAAc,EACd,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAU7B,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IACpE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;gBAO9B,IAAI,EAAE,iBAAiB,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IA8BjE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI/C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAKlD,QAAQ,IAAI,aAAa,EAAE;IAK3B,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,aAAa,EAAE;IASzD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,OAAO;IAItE,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO;IAOxD,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAe7D,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAQzE,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,aAAa,EAAE;IAQ5D,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IAWzD,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAO3E,SAAS,CACP,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC,GAChE,OAAO;IAMV,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAgBpE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAShE,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,aAAa,EAAE;IAM9D,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO;IAKzD,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,cAAc,EAAE;IAWhE,MAAM,CACJ,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC7B,iBAAiB,UAAQ,GACxB,eAAe;IAgBlB,OAAO,CAAC,eAAe;CAUxB"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RoleHierarchy = void 0;
4
+ const tenant_role_enum_1 = require("../enums/tenant.role.enum");
5
+ class RoleHierarchy {
6
+ constructor(data, tenantScopeIds) {
7
+ this.topPriority = new Map();
8
+ this.grantsByRole = new Map();
9
+ const inTenant = (scopeId) => !scopeId || !tenantScopeIds || tenantScopeIds.has(scopeId);
10
+ this.roles = data.roles.filter((role) => inTenant(role.scope_id));
11
+ this.roleById = new Map(this.roles.map((role) => [role.id, role]));
12
+ this.roleByIdentifier = new Map(this.roles.map((role) => [role.identifier, role]));
13
+ this.scopeById = new Map(data.scopes.map((scope) => [scope.id, scope]));
14
+ for (const role of this.roles) {
15
+ if (!role.scope_id)
16
+ continue;
17
+ const top = this.topPriority.get(role.scope_id);
18
+ if (top === undefined || role.priority < top)
19
+ this.topPriority.set(role.scope_id, role.priority);
20
+ }
21
+ const grants = (data.grants ?? []).filter((grant) => inTenant(grant.scope_id));
22
+ for (const grant of grants) {
23
+ const list = this.grantsByRole.get(grant.role_id) ?? [];
24
+ list.push(grant);
25
+ this.grantsByRole.set(grant.role_id, list);
26
+ }
27
+ this.permissions = new Set(grants.map((grant) => grant.permission));
28
+ }
29
+ role(roleId) {
30
+ return this.roleById.get(roleId);
31
+ }
32
+ scope(scopeId) {
33
+ return this.scopeById.get(scopeId);
34
+ }
35
+ allRoles() {
36
+ return [...this.roles];
37
+ }
38
+ effective(heldRoleIds) {
39
+ const held = new Map();
40
+ for (const roleId of heldRoleIds) {
41
+ const role = this.roleById.get(roleId);
42
+ if (role)
43
+ held.set(role.id, role);
44
+ }
45
+ return [...held.values()];
46
+ }
47
+ static isGlobalAdmin(role) {
48
+ return role.identifier === String(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
49
+ }
50
+ holdsGlobalAdmin(heldRoleIds) {
51
+ return this.effective(heldRoleIds).some((role) => RoleHierarchy.isGlobalAdmin(role));
52
+ }
53
+ covers(held, required) {
54
+ if (RoleHierarchy.isGlobalAdmin(held) || held.id === required.id)
55
+ return true;
56
+ if (!held.scope_id || !required.scope_id)
57
+ return false;
58
+ if (held.priority > required.priority)
59
+ return false;
60
+ return (held.scope_id === required.scope_id ||
61
+ held.scope_id === this.scopeById.get(required.scope_id)?.parent_id);
62
+ }
63
+ satisfiesRole(heldRoleIds, identifier) {
64
+ const held = this.effective(heldRoleIds);
65
+ if (held.some((role) => RoleHierarchy.isGlobalAdmin(role)))
66
+ return true;
67
+ const required = this.roleByIdentifier.get(identifier);
68
+ return !!required && held.some((role) => this.covers(role, required));
69
+ }
70
+ coveredRoles(heldRoleIds) {
71
+ const held = this.effective(heldRoleIds);
72
+ return this.roles.filter((candidate) => held.some((role) => this.covers(role, candidate)));
73
+ }
74
+ permissionsOf(heldRoleIds) {
75
+ const ids = [...heldRoleIds];
76
+ if (this.holdsGlobalAdmin(ids))
77
+ return new Set(this.permissions);
78
+ const reached = new Set();
79
+ for (const role of this.coveredRoles(ids))
80
+ for (const grant of this.grantsByRole.get(role.id) ?? [])
81
+ reached.add(grant.permission);
82
+ return reached;
83
+ }
84
+ holdsPermission(heldRoleIds, permission) {
85
+ const ids = [...heldRoleIds];
86
+ if (this.holdsGlobalAdmin(ids))
87
+ return true;
88
+ return this.permissionsOf(ids).has(permission);
89
+ }
90
+ isTopRole(role) {
91
+ if (!role.scope_id)
92
+ return RoleHierarchy.isGlobalAdmin(role);
93
+ return this.topPriority.get(role.scope_id) === role.priority;
94
+ }
95
+ administers(heldRoleIds, scopeId) {
96
+ const held = this.effective(heldRoleIds);
97
+ if (held.some((role) => RoleHierarchy.isGlobalAdmin(role)))
98
+ return true;
99
+ const parentId = this.scopeById.get(scopeId)?.parent_id;
100
+ return held.some((role) => !!role.scope_id &&
101
+ (role.scope_id === scopeId || role.scope_id === parentId) &&
102
+ this.isTopRole(role));
103
+ }
104
+ canGrant(heldRoleIds, roleId) {
105
+ const target = this.roleById.get(roleId);
106
+ if (!target)
107
+ return false;
108
+ const ids = [...heldRoleIds];
109
+ if (this.holdsGlobalAdmin(ids))
110
+ return true;
111
+ return !!target.scope_id && this.administers(ids, target.scope_id);
112
+ }
113
+ grantableRoles(heldRoleIds) {
114
+ const ids = [...heldRoleIds];
115
+ return this.roles.filter((role) => this.canGrant(ids, role.id));
116
+ }
117
+ hasGrantAuthority(heldRoleIds) {
118
+ return this.grantableRoles(heldRoleIds).length > 0;
119
+ }
120
+ grantableScopes(heldRoleIds) {
121
+ const ids = [...heldRoleIds];
122
+ return this.scopesWithRoles().filter((scope) => this.administers(ids, scope.id));
123
+ }
124
+ access(heldRoleIds, actsAsGlobalAdmin = false) {
125
+ const ids = [...heldRoleIds];
126
+ const isGlobalAdmin = actsAsGlobalAdmin || this.holdsGlobalAdmin(ids);
127
+ const scopes = isGlobalAdmin
128
+ ? this.scopesWithRoles()
129
+ : this.grantableScopes(ids);
130
+ return {
131
+ roles: this.effective(ids).map((role) => role.identifier),
132
+ permissions: [
133
+ ...(isGlobalAdmin ? this.permissions : this.permissionsOf(ids)),
134
+ ].sort(),
135
+ grantable_scopes: scopes.map((scope) => scope.identifier).sort(),
136
+ is_global_admin: isGlobalAdmin,
137
+ };
138
+ }
139
+ scopesWithRoles() {
140
+ const scopeIds = new Set(this.roles
141
+ .map((role) => role.scope_id)
142
+ .filter((scopeId) => !!scopeId));
143
+ return [...scopeIds]
144
+ .map((scopeId) => this.scopeById.get(scopeId))
145
+ .filter((scope) => !!scope);
146
+ }
147
+ }
148
+ exports.RoleHierarchy = RoleHierarchy;
149
+ //# sourceMappingURL=role.hierarchy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.hierarchy.js","sourceRoot":"","sources":["../../../src/auth/utilities/role.hierarchy.ts"],"names":[],"mappings":";;;AAAA,gEAAuD;AAiBvD,MAAa,aAAa;IAcxB,YAAY,IAAuB,EAAE,cAA4B;QAThD,gBAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QACxC,iBAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;QASlE,MAAM,QAAQ,GAAG,CAAC,OAAsB,EAAE,EAAE,CAC1C,CAAC,OAAO,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE7D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAClD,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAExE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,GAAG,GAAG;gBAC1C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAClD,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CACzB,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,CAAC;IAGD,IAAI,CAAC,MAAc;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAGD,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAGD,SAAS,CAAC,WAA6B;QACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC9C,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,IAAI;gBAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAuC;QAC1D,OAAO,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,6BAAU,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,gBAAgB,CAAC,WAA6B;QAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/C,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAClC,CAAC;IACJ,CAAC;IAGD,MAAM,CAAC,IAAmB,EAAE,QAAuB;QACjD,IAAI,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE;YAC9D,OAAO,IAAI,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpD,OAAO,CACL,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;YACnC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CACnE,CAAC;IACJ,CAAC;IAMD,aAAa,CAAC,WAA6B,EAAE,UAAkB;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxE,CAAC;IAGD,YAAY,CAAC,WAA6B;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACrC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAClD,CAAC;IACJ,CAAC;IAGD,aAAa,CAAC,WAA6B;QACzC,MAAM,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;gBACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD,eAAe,CAAC,WAA6B,EAAE,UAAkB;QAC/D,MAAM,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAGD,SAAS,CACP,IAAiE;QAEjE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC;IAC/D,CAAC;IAGD,WAAW,CAAC,WAA6B,EAAE,OAAe;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QACxD,OAAO,IAAI,CAAC,IAAI,CACd,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,CAAC,IAAI,CAAC,QAAQ;YACf,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACvB,CAAC;IACJ,CAAC;IAMD,QAAQ,CAAC,WAA6B,EAAE,MAAc;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5C,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAGD,cAAc,CAAC,WAA6B;QAC1C,MAAM,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAGD,iBAAiB,CAAC,WAA6B;QAC7C,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACrD,CAAC;IAGD,eAAe,CAAC,WAA6B;QAC3C,MAAM,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAChC,CAAC;IACJ,CAAC;IAMD,MAAM,CACJ,WAA6B,EAC7B,iBAAiB,GAAG,KAAK;QAEzB,MAAM,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QAC7B,MAAM,aAAa,GAAG,iBAAiB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,aAAa;YAC1B,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE;YACxB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YACzD,WAAW,EAAE;gBACX,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;aAChE,CAAC,IAAI,EAAE;YACR,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;YAChE,eAAe,EAAE,aAAa;SAC/B,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,IAAI,CAAC,KAAK;aACP,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC5B,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CACrD,CAAC;QACF,OAAO,CAAC,GAAG,QAAQ,CAAC;aACjB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;aAC7C,MAAM,CAAC,CAAC,KAAK,EAA2B,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;CACF;AAnND,sCAmNC"}
@@ -6,6 +6,8 @@ export declare class ScopeCascade {
6
6
  static expand(manager: EntityManager, granted: ScopeEntity[]): Promise<ScopeEntity[]>;
7
7
  static tenantEffective(manager: EntityManager, tenantId: string): Promise<ScopeEntity[]>;
8
8
  static pruneTenantKeys(manager: EntityManager, tenantId: string, revokedBy?: string): Promise<number>;
9
+ static pruneTenantKeyRoles(manager: EntityManager, tenantId: string, revokedBy?: string): Promise<number>;
10
+ static retireKeyRoles(manager: EntityManager, grantIds: string[], revokedBy?: string): Promise<number>;
9
11
  static setTenantScopes(manager: EntityManager, tenantId: string, scopeIds: string[], actorId?: string): Promise<void>;
10
12
  static retire(manager: EntityManager, grantIds: string[], revokedBy?: string): Promise<number>;
11
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scope.cascade.d.ts","sourceRoot":"","sources":["../../../src/auth/utilities/scope.cascade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAM,MAAM,SAAS,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAMvD,qBAAa,YAAY;IAKvB,MAAM,CAAC,aAAa,CAClB,SAAS,EAAE,aAAa,EAAE,EAC1B,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,YAAY,CAAC,EAAE,GAClD,MAAM,EAAE;WAcE,MAAM,CACjB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,WAAW,EAAE,GACrB,OAAO,CAAC,WAAW,EAAE,CAAC;WAgBZ,eAAe,CAC1B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC;WAiBZ,eAAe,CAC1B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;WAkBL,eAAe,CAC1B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;WAyCH,MAAM,CACjB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;CAWnB"}
1
+ {"version":3,"file":"scope.cascade.d.ts","sourceRoot":"","sources":["../../../src/auth/utilities/scope.cascade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAM,MAAM,SAAS,CAAC;AAI5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAOvD,qBAAa,YAAY;IAKvB,MAAM,CAAC,aAAa,CAClB,SAAS,EAAE,aAAa,EAAE,EAC1B,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,YAAY,CAAC,EAAE,GAClD,MAAM,EAAE;WAcE,MAAM,CACjB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,WAAW,EAAE,GACrB,OAAO,CAAC,WAAW,EAAE,CAAC;WAgBZ,eAAe,CAC1B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC;WAiBZ,eAAe,CAC1B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;WAuBL,mBAAmB,CAC9B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;WAsCL,cAAc,CACzB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;WAgBL,eAAe,CAC1B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;WAyCH,MAAM,CACjB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;CAWnB"}