@etohq/rbac 1.5.1-alpha.4

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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.d.ts +63 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +13 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/loaders/initial-data.d.ts +4 -0
  7. package/dist/loaders/initial-data.d.ts.map +1 -0
  8. package/dist/loaders/initial-data.js +27 -0
  9. package/dist/loaders/initial-data.js.map +1 -0
  10. package/dist/migrations/Migration20251219163509.d.ts +5 -0
  11. package/dist/migrations/Migration20251219163509.d.ts.map +1 -0
  12. package/dist/migrations/Migration20251219163509.js +36 -0
  13. package/dist/migrations/Migration20251219163509.js.map +1 -0
  14. package/dist/models/index.d.ts +5 -0
  15. package/dist/models/index.d.ts.map +1 -0
  16. package/dist/models/index.js +15 -0
  17. package/dist/models/index.js.map +1 -0
  18. package/dist/models/rbac-policy.d.ts +11 -0
  19. package/dist/models/rbac-policy.d.ts.map +1 -0
  20. package/dist/models/rbac-policy.js +30 -0
  21. package/dist/models/rbac-policy.js.map +1 -0
  22. package/dist/models/rbac-role-inheritance.d.ts +58 -0
  23. package/dist/models/rbac-role-inheritance.d.ts.map +1 -0
  24. package/dist/models/rbac-role-inheritance.js +33 -0
  25. package/dist/models/rbac-role-inheritance.js.map +1 -0
  26. package/dist/models/rbac-role-parent.d.ts +48 -0
  27. package/dist/models/rbac-role-parent.d.ts.map +1 -0
  28. package/dist/models/rbac-role-parent.js +31 -0
  29. package/dist/models/rbac-role-parent.js.map +1 -0
  30. package/dist/models/rbac-role-policy.d.ts +28 -0
  31. package/dist/models/rbac-role-policy.d.ts.map +1 -0
  32. package/dist/models/rbac-role-policy.js +32 -0
  33. package/dist/models/rbac-role-policy.js.map +1 -0
  34. package/dist/models/rbac-role.d.ts +28 -0
  35. package/dist/models/rbac-role.d.ts.map +1 -0
  36. package/dist/models/rbac-role.js +30 -0
  37. package/dist/models/rbac-role.js.map +1 -0
  38. package/dist/repositories/index.d.ts +2 -0
  39. package/dist/repositories/index.d.ts.map +1 -0
  40. package/dist/repositories/index.js +18 -0
  41. package/dist/repositories/index.js.map +1 -0
  42. package/dist/repositories/rbac.d.ts +9 -0
  43. package/dist/repositories/rbac.d.ts.map +1 -0
  44. package/dist/repositories/rbac.js +101 -0
  45. package/dist/repositories/rbac.js.map +1 -0
  46. package/dist/services/index.d.ts +2 -0
  47. package/dist/services/index.d.ts.map +1 -0
  48. package/dist/services/index.js +9 -0
  49. package/dist/services/index.js.map +1 -0
  50. package/dist/services/rbac-module-service.d.ts +142 -0
  51. package/dist/services/rbac-module-service.d.ts.map +1 -0
  52. package/dist/services/rbac-module-service.js +201 -0
  53. package/dist/services/rbac-module-service.js.map +1 -0
  54. package/dist/tsconfig.tsbuildinfo +1 -0
  55. package/dist/types/index.d.ts +2 -0
  56. package/dist/types/index.d.ts.map +1 -0
  57. package/dist/types/index.js +3 -0
  58. package/dist/types/index.js.map +1 -0
  59. package/package.json +63 -0
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@etohq/framework/utils");
7
+ const rbac_role_parent_1 = __importDefault(require("./rbac-role-parent"));
8
+ const rbac_role_policy_1 = __importDefault(require("./rbac-role-policy"));
9
+ const RbacRole = utils_1.model
10
+ .define("rbac_role", {
11
+ id: utils_1.model.id({ prefix: "role" }).primaryKey(),
12
+ name: utils_1.model.text().searchable(),
13
+ description: utils_1.model.text().nullable(),
14
+ metadata: utils_1.model.json().nullable(),
15
+ policies: utils_1.model.hasMany(() => rbac_role_policy_1.default, {
16
+ mappedBy: "role",
17
+ }),
18
+ parents: utils_1.model.hasMany(() => rbac_role_parent_1.default, {
19
+ mappedBy: "role",
20
+ }),
21
+ })
22
+ .indexes([
23
+ {
24
+ on: ["name"],
25
+ unique: true,
26
+ where: "deleted_at IS NULL",
27
+ },
28
+ ]);
29
+ exports.default = RbacRole;
30
+ //# sourceMappingURL=rbac-role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac-role.js","sourceRoot":"","sources":["../../src/models/rbac-role.ts"],"names":[],"mappings":";;;;;AAAA,kDAA8C;AAC9C,0EAA+C;AAC/C,0EAA+C;AAE/C,MAAM,QAAQ,GAAG,aAAK;KACnB,MAAM,CAAC,WAAW,EAAE;IACnB,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE;IAC7C,IAAI,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAC/B,WAAW,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,aAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,0BAAc,EAAE;QAC5C,QAAQ,EAAE,MAAM;KACjB,CAAC;IACF,OAAO,EAAE,aAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,0BAAc,EAAE;QAC3C,QAAQ,EAAE,MAAM;KACjB,CAAC;CACH,CAAC;KACD,OAAO,CAAC;IACP;QACE,EAAE,EAAE,CAAC,MAAM,CAAC;QACZ,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,oBAAoB;KAC5B;CACF,CAAC,CAAA;AAEJ,kBAAe,QAAQ,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./rbac";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./rbac"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repositories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAsB"}
@@ -0,0 +1,9 @@
1
+ import { Context } from "@etohq/framework/types";
2
+ import { MikroOrmBase } from "@etohq/framework/utils";
3
+ export declare class RbacRepository extends MikroOrmBase {
4
+ constructor();
5
+ listPoliciesForRole(roleId: string, sharedContext?: Context): Promise<any[]>;
6
+ listPoliciesForRoles(roleIds: string[], sharedContext?: Context): Promise<Map<string, any[]>>;
7
+ checkForCycle(roleId: string, parentId: string, sharedContext?: Context): Promise<boolean>;
8
+ }
9
+ //# sourceMappingURL=rbac.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac.d.ts","sourceRoot":"","sources":["../../src/repositories/rbac.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAErD,qBAAa,cAAe,SAAQ,YAAY;;IAOxC,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,OAAY,GAC1B,OAAO,CAAC,GAAG,EAAE,CAAC;IAQX,oBAAoB,CACxB,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,GAAE,OAAY,GAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAiExB,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,aAAa,GAAE,OAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;CA+BpB"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RbacRepository = void 0;
4
+ const utils_1 = require("@etohq/framework/utils");
5
+ class RbacRepository extends utils_1.MikroOrmBase {
6
+ constructor() {
7
+ // @ts-ignore
8
+ // eslint-disable-next-line prefer-rest-params
9
+ super(...arguments);
10
+ }
11
+ async listPoliciesForRole(roleId, sharedContext = {}) {
12
+ const policiesByRole = await this.listPoliciesForRoles([roleId], sharedContext);
13
+ return policiesByRole.get(roleId) || [];
14
+ }
15
+ async listPoliciesForRoles(roleIds, sharedContext = {}) {
16
+ const manager = this.getActiveManager(sharedContext);
17
+ const knex = manager.getKnex();
18
+ if (!roleIds?.length) {
19
+ return new Map();
20
+ }
21
+ const placeholders = roleIds.map(() => "?").join(",");
22
+ const query = `
23
+ WITH RECURSIVE role_hierarchy AS (
24
+ SELECT id, name, id as original_role_id, ARRAY[id] as path
25
+ FROM rbac_role
26
+ WHERE id IN (${placeholders}) AND deleted_at IS NULL
27
+
28
+ UNION ALL
29
+
30
+ SELECT r.id, r.name, rh.original_role_id, rh.path || r.id
31
+ FROM rbac_role r
32
+ INNER JOIN rbac_role_parent ri ON ri.parent_id = r.id
33
+ INNER JOIN role_hierarchy rh ON rh.id = ri.role_id
34
+ WHERE r.deleted_at IS NULL
35
+ AND ri.deleted_at IS NULL
36
+ AND NOT (r.id = ANY(rh.path))
37
+ )
38
+ SELECT DISTINCT
39
+ rh.original_role_id,
40
+ p.id,
41
+ p.key,
42
+ p.resource,
43
+ p.operation,
44
+ p.name,
45
+ p.description,
46
+ p.metadata,
47
+ p.created_at,
48
+ p.updated_at,
49
+ CASE WHEN rp.role_id = rh.original_role_id THEN NULL ELSE rp.role_id END as inherited_from_role_id
50
+ FROM rbac_policy p
51
+ INNER JOIN rbac_role_policy rp ON rp.policy_id = p.id
52
+ INNER JOIN role_hierarchy rh ON rh.id = rp.role_id
53
+ WHERE p.deleted_at IS NULL AND rp.deleted_at IS NULL
54
+ ORDER BY rh.original_role_id, p.resource, p.operation, p.key
55
+ `;
56
+ const result = await knex.raw(query, roleIds);
57
+ const rows = result.rows || [];
58
+ // Group policies by role_id
59
+ const policiesByRole = new Map();
60
+ for (const row of rows) {
61
+ const roleId = row.original_role_id;
62
+ delete row.original_role_id;
63
+ if (!policiesByRole.has(roleId)) {
64
+ policiesByRole.set(roleId, []);
65
+ }
66
+ policiesByRole.get(roleId).push(row);
67
+ }
68
+ return policiesByRole;
69
+ }
70
+ async checkForCycle(roleId, parentId, sharedContext = {}) {
71
+ const manager = this.getActiveManager(sharedContext);
72
+ const knex = manager.getKnex();
73
+ // Check if adding this parent would create a circular dependency
74
+ // A cycle exists if role_id is already an ancestor of parent_id
75
+ // (i.e., if we traverse up from parent_id, we reach role_id)
76
+ const query = `
77
+ WITH RECURSIVE role_hierarchy AS (
78
+ SELECT id, ARRAY[id] as path
79
+ FROM rbac_role
80
+ WHERE id = ? AND deleted_at IS NULL
81
+
82
+ UNION ALL
83
+
84
+ SELECT r.id, rh.path || r.id
85
+ FROM role_hierarchy rh
86
+ INNER JOIN rbac_role_parent ri ON ri.role_id = rh.id
87
+ INNER JOIN rbac_role r ON r.id = ri.parent_id
88
+ WHERE r.deleted_at IS NULL
89
+ AND ri.deleted_at IS NULL
90
+ AND NOT (r.id = ANY(rh.path))
91
+ )
92
+ SELECT EXISTS(
93
+ SELECT 1 FROM role_hierarchy WHERE id = ?
94
+ ) as has_cycle
95
+ `;
96
+ const result = await knex.raw(query, [parentId, roleId]);
97
+ return result.rows[0]?.has_cycle || false;
98
+ }
99
+ }
100
+ exports.RbacRepository = RbacRepository;
101
+ //# sourceMappingURL=rbac.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac.js","sourceRoot":"","sources":["../../src/repositories/rbac.ts"],"names":[],"mappings":";;;AAEA,kDAAqD;AAErD,MAAa,cAAe,SAAQ,oBAAY;IAC9C;QACE,aAAa;QACb,8CAA8C;QAC9C,KAAK,CAAC,GAAG,SAAS,CAAC,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,MAAc,EACd,gBAAyB,EAAE;QAE3B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,CACpD,CAAC,MAAM,CAAC,EACR,aAAa,CACd,CAAA;QACD,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,OAAiB,EACjB,gBAAyB,EAAE;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAmB,aAAa,CAAC,CAAA;QACtE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;QAE9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,OAAO,IAAI,GAAG,EAAE,CAAA;QAClB,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAErD,MAAM,KAAK,GAAG;;;;uBAIK,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6B9B,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;QAE9B,4BAA4B;QAC5B,MAAM,cAAc,GAAG,IAAI,GAAG,EAAiB,CAAA;QAE/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAA;YACnC,OAAO,GAAG,CAAC,gBAAgB,CAAA;YAE3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAChC,CAAC;YAED,cAAc,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACvC,CAAC;QAED,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,MAAc,EACd,QAAgB,EAChB,gBAAyB,EAAE;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAmB,aAAa,CAAC,CAAA;QACtE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;QAE9B,iEAAiE;QACjE,gEAAgE;QAChE,6DAA6D;QAC7D,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;KAmBb,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;QACxD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,KAAK,CAAA;IAC3C,CAAC;CACF;AAzHD,wCAyHC"}
@@ -0,0 +1,2 @@
1
+ export { default as RbacModuleService } from "./rbac-module-service";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RbacModuleService = void 0;
7
+ var rbac_module_service_1 = require("./rbac-module-service");
8
+ Object.defineProperty(exports, "RbacModuleService", { enumerable: true, get: function () { return __importDefault(rbac_module_service_1).default; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;AAAA,6DAAoE;AAA3D,yIAAA,OAAO,OAAqB"}
@@ -0,0 +1,142 @@
1
+ import { Context, InferEntityType, ModulesSdkTypes } from "@etohq/framework/types";
2
+ import { RbacPolicy, RbacRole, RbacRolePolicy } from "../models";
3
+ import { RbacRepository } from "../repositories";
4
+ type InjectedDependencies = {
5
+ rbacRepository: RbacRepository;
6
+ rbacRolePolicyService: ModulesSdkTypes.IEtoInternalService<InferEntityType<typeof RbacRolePolicy>>;
7
+ rbacRoleService: ModulesSdkTypes.IEtoInternalService<InferEntityType<typeof RbacRole>>;
8
+ rbacPolicyService: ModulesSdkTypes.IEtoInternalService<InferEntityType<typeof RbacPolicy>>;
9
+ };
10
+ declare const RbacModuleService_base: import("@etohq/framework/utils").EtoServiceReturnType<import("@etohq/framework/utils").ModelConfigurationsToConfigTemplate<{
11
+ readonly RbacRole: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
12
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
13
+ name: import("@etohq/framework/utils").TextProperty;
14
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
15
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
16
+ policies: import("@etohq/framework/utils").HasMany<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
17
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
18
+ role: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "rbac_role">, undefined>;
19
+ policy: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
20
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
21
+ key: import("@etohq/framework/utils").TextProperty;
22
+ resource: import("@etohq/framework/utils").TextProperty;
23
+ operation: import("@etohq/framework/utils").TextProperty;
24
+ name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
25
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
26
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
27
+ }>, "rbac_policy">, undefined>;
28
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
29
+ }>, "rbac_role_policy">>;
30
+ parents: import("@etohq/framework/utils").HasMany<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
31
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
32
+ role: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "rbac_role">, undefined>;
33
+ parent: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "rbac_role">, undefined>;
34
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
35
+ }>, "rbac_role_parent">>;
36
+ }>, "rbac_role">;
37
+ readonly RbacPolicy: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
38
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
39
+ key: import("@etohq/framework/utils").TextProperty;
40
+ resource: import("@etohq/framework/utils").TextProperty;
41
+ operation: import("@etohq/framework/utils").TextProperty;
42
+ name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
43
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
44
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
45
+ }>, "rbac_policy">;
46
+ readonly RbacRoleParent: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
47
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
48
+ role: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
49
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
50
+ name: import("@etohq/framework/utils").TextProperty;
51
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
52
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
53
+ policies: import("@etohq/framework/utils").HasMany<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
54
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
55
+ role: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "rbac_role">, undefined>;
56
+ policy: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
57
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
58
+ key: import("@etohq/framework/utils").TextProperty;
59
+ resource: import("@etohq/framework/utils").TextProperty;
60
+ operation: import("@etohq/framework/utils").TextProperty;
61
+ name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
62
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
63
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
64
+ }>, "rbac_policy">, undefined>;
65
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
66
+ }>, "rbac_role_policy">>;
67
+ parents: import("@etohq/framework/utils").HasMany<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "rbac_role_parent">>;
68
+ }>, "rbac_role">, undefined>;
69
+ parent: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
70
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
71
+ name: import("@etohq/framework/utils").TextProperty;
72
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
73
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
74
+ policies: import("@etohq/framework/utils").HasMany<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
75
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
76
+ role: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "rbac_role">, undefined>;
77
+ policy: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
78
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
79
+ key: import("@etohq/framework/utils").TextProperty;
80
+ resource: import("@etohq/framework/utils").TextProperty;
81
+ operation: import("@etohq/framework/utils").TextProperty;
82
+ name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
83
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
84
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
85
+ }>, "rbac_policy">, undefined>;
86
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
87
+ }>, "rbac_role_policy">>;
88
+ parents: import("@etohq/framework/utils").HasMany<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "rbac_role_parent">>;
89
+ }>, "rbac_role">, undefined>;
90
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
91
+ }>, "rbac_role_parent">;
92
+ readonly RbacRolePolicy: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
93
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
94
+ role: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
95
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
96
+ name: import("@etohq/framework/utils").TextProperty;
97
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
98
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
99
+ policies: import("@etohq/framework/utils").HasMany<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "rbac_role_policy">>;
100
+ parents: import("@etohq/framework/utils").HasMany<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
101
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
102
+ role: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "rbac_role">, undefined>;
103
+ parent: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "rbac_role">, undefined>;
104
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
105
+ }>, "rbac_role_parent">>;
106
+ }>, "rbac_role">, undefined>;
107
+ policy: import("@etohq/framework/utils").BelongsTo<() => import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
108
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
109
+ key: import("@etohq/framework/utils").TextProperty;
110
+ resource: import("@etohq/framework/utils").TextProperty;
111
+ operation: import("@etohq/framework/utils").TextProperty;
112
+ name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
113
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
114
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
115
+ }>, "rbac_policy">, undefined>;
116
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
117
+ }>, "rbac_role_policy">;
118
+ }>>;
119
+ export default class RbacModuleService extends RbacModuleService_base {
120
+ protected readonly rbacRepository_: RbacRepository;
121
+ protected readonly rbacRolePolicyService_: ModulesSdkTypes.IEtoInternalService<InferEntityType<typeof RbacRolePolicy>>;
122
+ protected readonly rbacRoleService_: ModulesSdkTypes.IEtoInternalService<InferEntityType<typeof RbacRole>>;
123
+ protected readonly rbacPolicyService_: ModulesSdkTypes.IEtoInternalService<InferEntityType<typeof RbacPolicy>>;
124
+ constructor({ rbacRepository, rbacRoleService, rbacPolicyService, rbacRolePolicyService, }: InjectedDependencies);
125
+ __hooks: {
126
+ onApplicationStart: () => Promise<void>;
127
+ };
128
+ private syncRegisteredPolicies;
129
+ listPoliciesForRole(roleId: string, sharedContext?: Context): Promise<any[]>;
130
+ listRbacRoles(filters?: any, config?: any, sharedContext?: Context): Promise<any[]>;
131
+ listAndCountRbacRoles(filters?: any, config?: any, sharedContext?: Context): Promise<[any[], number]>;
132
+ createRbacRoleParents(data: Array<{
133
+ role_id: string;
134
+ parent_id: string;
135
+ }>, sharedContext?: Context): Promise<any>;
136
+ updateRbacRoleParents(data: Array<{
137
+ role_id?: string;
138
+ parent_id?: string;
139
+ }>, sharedContext?: Context): Promise<any>;
140
+ }
141
+ export {};
142
+ //# sourceMappingURL=rbac-module-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac-module-service.d.ts","sourceRoot":"","sources":["../../src/services/rbac-module-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAQlF,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAkB,cAAc,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,KAAK,oBAAoB,GAAG;IAC1B,cAAc,EAAE,cAAc,CAAA;IAC9B,qBAAqB,EAAE,eAAe,CAAC,mBAAmB,CACxD,eAAe,CAAC,OAAO,cAAc,CAAC,CACvC,CAAA;IACD,eAAe,EAAE,eAAe,CAAC,mBAAmB,CAClD,eAAe,CAAC,OAAO,QAAQ,CAAC,CACjC,CAAA;IACD,iBAAiB,EAAE,eAAe,CAAC,mBAAmB,CACpD,eAAe,CAAC,OAAO,UAAU,CAAC,CACnC,CAAA;CACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,sBAK7C;IACA,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,cAAc,CAAA;IAClD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,eAAe,CAAC,mBAAmB,CAC5E,eAAe,CAAC,OAAO,cAAc,CAAC,CACvC,CAAA;IACD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,eAAe,CAAC,mBAAmB,CACtE,eAAe,CAAC,OAAO,QAAQ,CAAC,CACjC,CAAA;IACD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC,mBAAmB,CACxE,eAAe,CAAC,OAAO,UAAU,CAAC,CACnC,CAAA;gBAEW,EACV,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GACtB,EAAE,oBAAoB;IASvB,OAAO;;MAIN;YAGa,sBAAsB;IAqE9B,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACA,aAAa,GAAE,OAAY,GACxC,OAAO,CAAC,GAAG,EAAE,CAAC;IAMX,aAAa,CACjB,OAAO,GAAE,GAAQ,EACjB,MAAM,GAAE,GAAQ,EACF,aAAa,GAAE,OAAY,GACxC,OAAO,CAAC,GAAG,EAAE,CAAC;IAwBX,qBAAqB,CACzB,OAAO,GAAE,GAAQ,EACjB,MAAM,GAAE,GAAQ,EACF,aAAa,GAAE,OAAY,GACxC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IA4BrB,qBAAqB,CACzB,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,EACrC,aAAa,GAAE,OAAY,GACxC,OAAO,CAAC,GAAG,CAAC;IA4BT,qBAAqB,CACzB,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACvC,aAAa,GAAE,OAAY,GACxC,OAAO,CAAC,GAAG,CAAC;CA2BhB"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const utils_1 = require("@etohq/framework/utils");
16
+ const _models_1 = require("../models");
17
+ const SUPER_ADMIN_KEY = "*:*";
18
+ const REGISTERED_POLICIES = [];
19
+ class RbacModuleService extends (0, utils_1.EtoService)({
20
+ RbacRole: _models_1.RbacRole,
21
+ RbacPolicy: _models_1.RbacPolicy,
22
+ RbacRoleParent: _models_1.RbacRoleParent,
23
+ RbacRolePolicy: _models_1.RbacRolePolicy,
24
+ }) {
25
+ constructor({ rbacRepository, rbacRoleService, rbacPolicyService, rbacRolePolicyService, }) {
26
+ // @ts-ignore
27
+ super(...arguments);
28
+ this.__hooks = {
29
+ onApplicationStart: async () => {
30
+ await this.syncRegisteredPolicies();
31
+ },
32
+ };
33
+ this.rbacRepository_ = rbacRepository;
34
+ this.rbacRolePolicyService_ = rbacRolePolicyService;
35
+ this.rbacRoleService_ = rbacRoleService;
36
+ this.rbacPolicyService_ = rbacPolicyService;
37
+ }
38
+ async syncRegisteredPolicies(sharedContext = {}) {
39
+ const registeredKeys = REGISTERED_POLICIES.map((p) => p.key);
40
+ const existingPolicies = await this.listRbacPolicies({}, { withDeleted: true }, sharedContext);
41
+ const existingPoliciesMap = new Map(existingPolicies.map((p) => [p.key, p]));
42
+ const policiesToCreate = [];
43
+ const policiesToUpdate = [];
44
+ const policiesToRestore = [];
45
+ for (const registeredPolicy of REGISTERED_POLICIES) {
46
+ const existing = existingPoliciesMap.get(registeredPolicy.key);
47
+ const hasChanges = existing &&
48
+ (existing.name !== registeredPolicy.name ||
49
+ existing.description !== registeredPolicy.description);
50
+ if (!existing) {
51
+ policiesToCreate.push(registeredPolicy);
52
+ }
53
+ else if (existing.deleted_at) {
54
+ policiesToRestore.push(existing.id);
55
+ if (hasChanges) {
56
+ policiesToUpdate.push({
57
+ id: existing.id,
58
+ name: registeredPolicy.name,
59
+ description: registeredPolicy.description,
60
+ });
61
+ }
62
+ }
63
+ else if (hasChanges) {
64
+ policiesToUpdate.push({
65
+ id: existing.id,
66
+ name: registeredPolicy.name,
67
+ description: registeredPolicy.description,
68
+ });
69
+ }
70
+ }
71
+ const policiesToSoftDelete = existingPolicies
72
+ .filter((p) => !p.deleted_at &&
73
+ !registeredKeys.includes(p.key) &&
74
+ p.key !== SUPER_ADMIN_KEY)
75
+ .map((p) => p.id);
76
+ if (policiesToRestore.length > 0) {
77
+ await this.restoreRbacPolicies(policiesToRestore, {}, sharedContext);
78
+ }
79
+ await (0, utils_1.promiseAll)([
80
+ policiesToCreate.length > 0 &&
81
+ this.rbacPolicyService_.create(policiesToCreate, sharedContext),
82
+ policiesToUpdate.length > 0 &&
83
+ this.rbacPolicyService_.upsert(policiesToUpdate, sharedContext),
84
+ policiesToSoftDelete.length > 0 &&
85
+ this.rbacPolicyService_.softDelete(policiesToSoftDelete, sharedContext),
86
+ ]);
87
+ }
88
+ async listPoliciesForRole(roleId, sharedContext = {}) {
89
+ return await this.rbacRepository_.listPoliciesForRole(roleId, sharedContext);
90
+ }
91
+ // @ts-expect-error augment generated method with policy expansion
92
+ async listRbacRoles(filters = {}, config = {}, sharedContext = {}) {
93
+ const roles = await super.listRbacRoles(filters, config, sharedContext);
94
+ const shouldIncludePolicies = config.relations?.includes("policies") ||
95
+ config.select?.includes("policies");
96
+ if (shouldIncludePolicies && roles.length > 0) {
97
+ const roleIds = roles.map((role) => role.id);
98
+ const policiesByRole = await this.rbacRepository_.listPoliciesForRoles(roleIds, sharedContext);
99
+ for (const role of roles) {
100
+ role.policies = policiesByRole.get(role.id) || [];
101
+ }
102
+ }
103
+ return roles;
104
+ }
105
+ // @ts-expect-error augment generated method with policy expansion
106
+ async listAndCountRbacRoles(filters = {}, config = {}, sharedContext = {}) {
107
+ const [roles, count] = await super.listAndCountRbacRoles(filters, config, sharedContext);
108
+ const shouldIncludePolicies = config.relations?.includes("policies") ||
109
+ config.select?.includes("policies");
110
+ if (shouldIncludePolicies && roles.length > 0) {
111
+ const roleIds = roles.map((role) => role.id);
112
+ const policiesByRole = await this.rbacRepository_.listPoliciesForRoles(roleIds, sharedContext);
113
+ for (const role of roles) {
114
+ role.policies = policiesByRole.get(role.id) || [];
115
+ }
116
+ }
117
+ return [roles, count];
118
+ }
119
+ // @ts-expect-error add cycle validation before create
120
+ async createRbacRoleParents(data, sharedContext = {}) {
121
+ for (const parent of data) {
122
+ const { role_id, parent_id } = parent;
123
+ if (role_id === parent_id) {
124
+ throw new Error(`Cannot create role parent relationship: a role cannot be its own parent (role_id: ${role_id})`);
125
+ }
126
+ const wouldCreateCycle = await this.rbacRepository_.checkForCycle(role_id, parent_id, sharedContext);
127
+ if (wouldCreateCycle) {
128
+ throw new Error(`Cannot create role parent relationship: this would create a circular dependency (role_id: ${role_id}, parent_id: ${parent_id})`);
129
+ }
130
+ }
131
+ return await super.createRbacRoleParents(data, sharedContext);
132
+ }
133
+ // @ts-expect-error add cycle validation before update
134
+ async updateRbacRoleParents(data, sharedContext = {}) {
135
+ for (const parent of data) {
136
+ const { role_id, parent_id } = parent;
137
+ if (parent_id) {
138
+ if (role_id === parent_id) {
139
+ throw new Error(`Cannot update role parent relationship: a role cannot be its own parent (role_id: ${role_id})`);
140
+ }
141
+ const wouldCreateCycle = await this.rbacRepository_.checkForCycle(role_id, parent_id, sharedContext);
142
+ if (wouldCreateCycle) {
143
+ throw new Error(`Cannot update role parent relationship: this would create a circular dependency (role_id: ${role_id}, parent_id: ${parent_id})`);
144
+ }
145
+ }
146
+ }
147
+ return await super.updateRbacRoleParents(data, sharedContext);
148
+ }
149
+ }
150
+ exports.default = RbacModuleService;
151
+ __decorate([
152
+ (0, utils_1.InjectTransactionManager)(),
153
+ __param(0, (0, utils_1.EtoContext)()),
154
+ __metadata("design:type", Function),
155
+ __metadata("design:paramtypes", [Object]),
156
+ __metadata("design:returntype", Promise)
157
+ ], RbacModuleService.prototype, "syncRegisteredPolicies", null);
158
+ __decorate([
159
+ (0, utils_1.InjectManager)(),
160
+ __param(1, (0, utils_1.EtoContext)()),
161
+ __metadata("design:type", Function),
162
+ __metadata("design:paramtypes", [String, Object]),
163
+ __metadata("design:returntype", Promise)
164
+ ], RbacModuleService.prototype, "listPoliciesForRole", null);
165
+ __decorate([
166
+ (0, utils_1.InjectManager)()
167
+ // @ts-expect-error augment generated method with policy expansion
168
+ ,
169
+ __param(2, (0, utils_1.EtoContext)()),
170
+ __metadata("design:type", Function),
171
+ __metadata("design:paramtypes", [Object, Object, Object]),
172
+ __metadata("design:returntype", Promise)
173
+ ], RbacModuleService.prototype, "listRbacRoles", null);
174
+ __decorate([
175
+ (0, utils_1.InjectManager)()
176
+ // @ts-expect-error augment generated method with policy expansion
177
+ ,
178
+ __param(2, (0, utils_1.EtoContext)()),
179
+ __metadata("design:type", Function),
180
+ __metadata("design:paramtypes", [Object, Object, Object]),
181
+ __metadata("design:returntype", Promise)
182
+ ], RbacModuleService.prototype, "listAndCountRbacRoles", null);
183
+ __decorate([
184
+ (0, utils_1.InjectManager)()
185
+ // @ts-expect-error add cycle validation before create
186
+ ,
187
+ __param(1, (0, utils_1.EtoContext)()),
188
+ __metadata("design:type", Function),
189
+ __metadata("design:paramtypes", [Array, Object]),
190
+ __metadata("design:returntype", Promise)
191
+ ], RbacModuleService.prototype, "createRbacRoleParents", null);
192
+ __decorate([
193
+ (0, utils_1.InjectManager)()
194
+ // @ts-expect-error add cycle validation before update
195
+ ,
196
+ __param(1, (0, utils_1.EtoContext)()),
197
+ __metadata("design:type", Function),
198
+ __metadata("design:paramtypes", [Array, Object]),
199
+ __metadata("design:returntype", Promise)
200
+ ], RbacModuleService.prototype, "updateRbacRoleParents", null);
201
+ //# sourceMappingURL=rbac-module-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac-module-service.js","sourceRoot":"","sources":["../../src/services/rbac-module-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"root":["../src/index.ts","../src/loaders/initial-data.ts","../src/migrations/migration20251219163509.ts","../src/models/index.ts","../src/models/rbac-policy.ts","../src/models/rbac-role-inheritance.ts","../src/models/rbac-role-parent.ts","../src/models/rbac-role-policy.ts","../src/models/rbac-role.ts","../src/repositories/index.ts","../src/repositories/rbac.ts","../src/services/index.ts","../src/services/rbac-module-service.ts","../src/types/index.ts"],"version":"5.8.3"}
@@ -0,0 +1,2 @@
1
+ export type RbacModuleOptions = Record<string, unknown>;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}