@neohm/nestend 5.0.2 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -18
- package/dist/admin/controllers/admin.api.key.controller.d.ts +5 -0
- package/dist/admin/controllers/admin.api.key.controller.d.ts.map +1 -1
- package/dist/admin/controllers/admin.api.key.controller.js +22 -2
- package/dist/admin/controllers/admin.api.key.controller.js.map +1 -1
- package/dist/admin/controllers/admin.permission.controller.d.ts +17 -0
- package/dist/admin/controllers/admin.permission.controller.d.ts.map +1 -0
- package/dist/admin/controllers/admin.permission.controller.js +125 -0
- package/dist/admin/controllers/admin.permission.controller.js.map +1 -0
- package/dist/admin/controllers/admin.scope.controller.d.ts.map +1 -1
- package/dist/admin/controllers/admin.scope.controller.js +1 -1
- package/dist/admin/controllers/admin.scope.controller.js.map +1 -1
- package/dist/admin/controllers/system.role.controller.d.ts +17 -1
- package/dist/admin/controllers/system.role.controller.d.ts.map +1 -1
- package/dist/admin/controllers/system.role.controller.js +13 -4
- package/dist/admin/controllers/system.role.controller.js.map +1 -1
- package/dist/admin/dtos/add.api.key.dto.d.ts +1 -0
- package/dist/admin/dtos/add.api.key.dto.d.ts.map +1 -1
- package/dist/admin/dtos/add.api.key.dto.js +12 -0
- package/dist/admin/dtos/add.api.key.dto.js.map +1 -1
- package/dist/admin/dtos/add.permission.dto.d.ts +8 -0
- package/dist/admin/dtos/add.permission.dto.d.ts.map +1 -0
- package/dist/admin/dtos/add.permission.dto.js +53 -0
- package/dist/admin/dtos/add.permission.dto.js.map +1 -0
- package/dist/admin/dtos/add.system.role.dto.d.ts +3 -0
- package/dist/admin/dtos/add.system.role.dto.d.ts.map +1 -1
- package/dist/admin/dtos/add.system.role.dto.js +38 -1
- package/dist/admin/dtos/add.system.role.dto.js.map +1 -1
- package/dist/admin/dtos/api.key.roles.dto.d.ts +4 -0
- package/dist/admin/dtos/api.key.roles.dto.d.ts.map +1 -0
- package/dist/admin/dtos/api.key.roles.dto.js +30 -0
- package/dist/admin/dtos/api.key.roles.dto.js.map +1 -0
- package/dist/admin/dtos/permission.list.dto.d.ts +4 -0
- package/dist/admin/dtos/permission.list.dto.d.ts.map +1 -0
- package/dist/admin/dtos/permission.list.dto.js +8 -0
- package/dist/admin/dtos/permission.list.dto.js.map +1 -0
- package/dist/admin/es6.classes.d.ts +9 -4
- package/dist/admin/es6.classes.d.ts.map +1 -1
- package/dist/admin/es6.classes.js +14 -0
- package/dist/admin/es6.classes.js.map +1 -1
- package/dist/admin/libraries/api.key.data.processor.d.ts +1 -0
- package/dist/admin/libraries/api.key.data.processor.d.ts.map +1 -1
- package/dist/admin/libraries/api.key.data.processor.js +23 -1
- package/dist/admin/libraries/api.key.data.processor.js.map +1 -1
- package/dist/admin/libraries/api.key.list.processor.d.ts.map +1 -1
- package/dist/admin/libraries/api.key.list.processor.js +18 -1
- package/dist/admin/libraries/api.key.list.processor.js.map +1 -1
- package/dist/admin/libraries/api.key.roles.data.processor.d.ts +15 -0
- package/dist/admin/libraries/api.key.roles.data.processor.d.ts.map +1 -0
- package/dist/admin/libraries/api.key.roles.data.processor.js +49 -0
- package/dist/admin/libraries/api.key.roles.data.processor.js.map +1 -0
- package/dist/admin/libraries/client.membership.data.processor.d.ts.map +1 -1
- package/dist/admin/libraries/client.membership.data.processor.js +4 -1
- package/dist/admin/libraries/client.membership.data.processor.js.map +1 -1
- package/dist/admin/libraries/client.user.data.processor.d.ts.map +1 -1
- package/dist/admin/libraries/client.user.data.processor.js +5 -2
- package/dist/admin/libraries/client.user.data.processor.js.map +1 -1
- package/dist/admin/libraries/permission.data.processor.d.ts +16 -0
- package/dist/admin/libraries/permission.data.processor.d.ts.map +1 -0
- package/dist/admin/libraries/permission.data.processor.js +68 -0
- package/dist/admin/libraries/permission.data.processor.js.map +1 -0
- package/dist/admin/libraries/permission.list.processor.d.ts +11 -0
- package/dist/admin/libraries/permission.list.processor.d.ts.map +1 -0
- package/dist/admin/libraries/permission.list.processor.js +42 -0
- package/dist/admin/libraries/permission.list.processor.js.map +1 -0
- package/dist/admin/libraries/role.list.processor.d.ts.map +1 -1
- package/dist/admin/libraries/role.list.processor.js +14 -1
- package/dist/admin/libraries/role.list.processor.js.map +1 -1
- package/dist/admin/libraries/system.role.data.processor.d.ts +4 -0
- package/dist/admin/libraries/system.role.data.processor.d.ts.map +1 -1
- package/dist/admin/libraries/system.role.data.processor.js +68 -5
- package/dist/admin/libraries/system.role.data.processor.js.map +1 -1
- package/dist/admin/utilities/api.key.role.policy.d.ts +4 -0
- package/dist/admin/utilities/api.key.role.policy.d.ts.map +1 -0
- package/dist/admin/utilities/api.key.role.policy.js +30 -0
- package/dist/admin/utilities/api.key.role.policy.js.map +1 -0
- package/dist/admin/utilities/scope.grants.d.ts.map +1 -1
- package/dist/admin/utilities/scope.grants.js +6 -1
- package/dist/admin/utilities/scope.grants.js.map +1 -1
- package/dist/admin/utilities/tenant.role.policy.d.ts +4 -5
- package/dist/admin/utilities/tenant.role.policy.d.ts.map +1 -1
- package/dist/admin/utilities/tenant.role.policy.js +7 -6
- package/dist/admin/utilities/tenant.role.policy.js.map +1 -1
- package/dist/auth/controllers/auth.controller.d.ts.map +1 -1
- package/dist/auth/controllers/auth.controller.js +5 -2
- package/dist/auth/controllers/auth.controller.js.map +1 -1
- package/dist/auth/controllers/tenant.invitation.controller.d.ts.map +1 -1
- package/dist/auth/controllers/tenant.invitation.controller.js +15 -16
- package/dist/auth/controllers/tenant.invitation.controller.js.map +1 -1
- package/dist/auth/controllers/tenant.member.controller.d.ts.map +1 -1
- package/dist/auth/controllers/tenant.member.controller.js +5 -5
- package/dist/auth/controllers/tenant.member.controller.js.map +1 -1
- package/dist/auth/decorators/api.key.scopes.decorator.d.ts +4 -0
- package/dist/auth/decorators/api.key.scopes.decorator.d.ts.map +1 -1
- package/dist/auth/decorators/api.key.scopes.decorator.js +7 -1
- package/dist/auth/decorators/api.key.scopes.decorator.js.map +1 -1
- package/dist/auth/entities/api.key.role.entity.d.ts +13 -0
- package/dist/auth/entities/api.key.role.entity.d.ts.map +1 -0
- package/dist/auth/entities/api.key.role.entity.js +51 -0
- package/dist/auth/entities/api.key.role.entity.js.map +1 -0
- package/dist/auth/entities/permission.entity.d.ts +10 -0
- package/dist/auth/entities/permission.entity.d.ts.map +1 -0
- package/dist/auth/entities/permission.entity.js +43 -0
- package/dist/auth/entities/permission.entity.js.map +1 -0
- package/dist/auth/entities/role.permission.entity.d.ts +10 -0
- package/dist/auth/entities/role.permission.entity.d.ts.map +1 -0
- package/dist/auth/entities/role.permission.entity.js +41 -0
- package/dist/auth/entities/role.permission.entity.js.map +1 -0
- package/dist/auth/entities/system.role.entity.d.ts +6 -0
- package/dist/auth/entities/system.role.entity.d.ts.map +1 -1
- package/dist/auth/entities/system.role.entity.js +20 -0
- package/dist/auth/entities/system.role.entity.js.map +1 -1
- package/dist/auth/enums/role.default.enum.d.ts +8 -0
- package/dist/auth/enums/role.default.enum.d.ts.map +1 -0
- package/dist/auth/enums/role.default.enum.js +13 -0
- package/dist/auth/enums/role.default.enum.js.map +1 -0
- package/dist/auth/enums/tenant.role.enum.d.ts.map +1 -1
- package/dist/auth/enums/tenant.role.enum.js.map +1 -1
- package/dist/auth/guards/api.key.guard.d.ts.map +1 -1
- package/dist/auth/guards/api.key.guard.js +24 -8
- package/dist/auth/guards/api.key.guard.js.map +1 -1
- package/dist/auth/middlewares/api.key.middleware.d.ts.map +1 -1
- package/dist/auth/middlewares/api.key.middleware.js +1 -1
- package/dist/auth/middlewares/api.key.middleware.js.map +1 -1
- package/dist/auth/processors/tenant.invitation.data.processor.d.ts +3 -1
- package/dist/auth/processors/tenant.invitation.data.processor.d.ts.map +1 -1
- package/dist/auth/processors/tenant.invitation.data.processor.js +6 -2
- package/dist/auth/processors/tenant.invitation.data.processor.js.map +1 -1
- package/dist/auth/processors/tenant.invitation.list.processor.d.ts +2 -1
- package/dist/auth/processors/tenant.invitation.list.processor.d.ts.map +1 -1
- package/dist/auth/processors/tenant.invitation.list.processor.js +4 -1
- package/dist/auth/processors/tenant.invitation.list.processor.js.map +1 -1
- package/dist/auth/services/api.key.service.d.ts +11 -2
- package/dist/auth/services/api.key.service.d.ts.map +1 -1
- package/dist/auth/services/api.key.service.js +90 -7
- package/dist/auth/services/api.key.service.js.map +1 -1
- package/dist/auth/services/auth.service.d.ts +10 -5
- package/dist/auth/services/auth.service.d.ts.map +1 -1
- package/dist/auth/services/auth.service.js +69 -49
- package/dist/auth/services/auth.service.js.map +1 -1
- package/dist/auth/services/role.service.d.ts +3 -1
- package/dist/auth/services/role.service.d.ts.map +1 -1
- package/dist/auth/services/role.service.js +37 -0
- package/dist/auth/services/role.service.js.map +1 -1
- package/dist/auth/services/scope.service.d.ts +1 -0
- package/dist/auth/services/scope.service.d.ts.map +1 -1
- package/dist/auth/services/scope.service.js +32 -0
- package/dist/auth/services/scope.service.js.map +1 -1
- package/dist/auth/services/tenant.invitation.service.d.ts +6 -4
- package/dist/auth/services/tenant.invitation.service.d.ts.map +1 -1
- package/dist/auth/services/tenant.invitation.service.js +30 -6
- package/dist/auth/services/tenant.invitation.service.js.map +1 -1
- package/dist/auth/services/tenant.membership.service.d.ts +3 -1
- package/dist/auth/services/tenant.membership.service.d.ts.map +1 -1
- package/dist/auth/services/tenant.membership.service.js +22 -3
- package/dist/auth/services/tenant.membership.service.js.map +1 -1
- package/dist/auth/types/api.key.types.d.ts +6 -0
- package/dist/auth/types/api.key.types.d.ts.map +1 -1
- package/dist/auth/types/auth.types.d.ts +2 -0
- package/dist/auth/types/auth.types.d.ts.map +1 -1
- package/dist/auth/types/rbac.types.d.ts +39 -0
- package/dist/auth/types/rbac.types.d.ts.map +1 -0
- package/dist/auth/types/rbac.types.js +3 -0
- package/dist/auth/types/rbac.types.js.map +1 -0
- package/dist/auth/utilities/grant.authority.d.ts +14 -0
- package/dist/auth/utilities/grant.authority.d.ts.map +1 -0
- package/dist/auth/utilities/grant.authority.js +38 -0
- package/dist/auth/utilities/grant.authority.js.map +1 -0
- package/dist/auth/utilities/role.catalogue.d.ts +10 -0
- package/dist/auth/utilities/role.catalogue.d.ts.map +1 -0
- package/dist/auth/utilities/role.catalogue.js +91 -0
- package/dist/auth/utilities/role.catalogue.js.map +1 -0
- package/dist/auth/utilities/role.hierarchy.d.ts +33 -0
- package/dist/auth/utilities/role.hierarchy.d.ts.map +1 -0
- package/dist/auth/utilities/role.hierarchy.js +158 -0
- package/dist/auth/utilities/role.hierarchy.js.map +1 -0
- package/dist/auth/utilities/scope.cascade.d.ts +2 -0
- package/dist/auth/utilities/scope.cascade.d.ts.map +1 -1
- package/dist/auth/utilities/scope.cascade.js +44 -2
- package/dist/auth/utilities/scope.cascade.js.map +1 -1
- package/dist/auth/utilities/tenant.access.d.ts.map +1 -1
- package/dist/auth/utilities/tenant.access.js +10 -3
- package/dist/auth/utilities/tenant.access.js.map +1 -1
- package/dist/constants/entity.constants.d.ts +3 -0
- package/dist/constants/entity.constants.d.ts.map +1 -1
- package/dist/constants/entity.constants.js +3 -0
- package/dist/constants/entity.constants.js.map +1 -1
- package/dist/constants/entity.maps.d.ts +6 -0
- package/dist/constants/entity.maps.d.ts.map +1 -1
- package/dist/constants/entity.maps.js +6 -0
- package/dist/constants/entity.maps.js.map +1 -1
- package/dist/index.d.ts +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -9
- package/dist/index.js.map +1 -1
- package/dist/migrations/1749600000004.CreateSysRolesTable.d.ts.map +1 -1
- package/dist/migrations/1749600000004.CreateSysRolesTable.js +7 -0
- package/dist/migrations/1749600000004.CreateSysRolesTable.js.map +1 -1
- package/dist/migrations/1749600000025.CreateSysScopesTable.d.ts +3 -0
- package/dist/migrations/1749600000025.CreateSysScopesTable.d.ts.map +1 -1
- package/dist/migrations/1749600000025.CreateSysScopesTable.js +16 -0
- package/dist/migrations/1749600000025.CreateSysScopesTable.js.map +1 -1
- package/dist/migrations/1749600000033.CreateSysPermissionsTable.d.ts +6 -0
- package/dist/migrations/1749600000033.CreateSysPermissionsTable.d.ts.map +1 -0
- package/dist/migrations/1749600000033.CreateSysPermissionsTable.js +29 -0
- package/dist/migrations/1749600000033.CreateSysPermissionsTable.js.map +1 -0
- package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.d.ts +6 -0
- package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.d.ts.map +1 -0
- package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.js +32 -0
- package/dist/migrations/1749600000034.CreateSysRolePermissionsTable.js.map +1 -0
- package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.d.ts +6 -0
- package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.d.ts.map +1 -0
- package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.js +38 -0
- package/dist/migrations/1749600000035.CreateSysApiKeyRolesTable.js.map +1 -0
- package/dist/migrations/1749600000036.SeedGlobalAdminRole.d.ts +6 -0
- package/dist/migrations/1749600000036.SeedGlobalAdminRole.d.ts.map +1 -0
- package/dist/migrations/1749600000036.SeedGlobalAdminRole.js +25 -0
- package/dist/migrations/1749600000036.SeedGlobalAdminRole.js.map +1 -0
- package/package.json +1 -1
- package/dist/auth/enums/role.tier.enum.d.ts +0 -6
- package/dist/auth/enums/role.tier.enum.d.ts.map +0 -1
- package/dist/auth/enums/role.tier.enum.js +0 -10
- 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,
|
|
95
|
-
await tenant_access_1.TenantAccess.reconcileRoles(trx, userId, tenantId,
|
|
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":";;;;;;;;;;;;;AAAA,2CAIwB;AACxB,qCAAoE;AACpE,+EAA2E;AAC3E,qFAAgF;AAEhF,uEAAmE;AAGnE,uEAAkE;AAClE,uEAAkE;AAClE,yDAAqD;AACrD,4DAAmD;AAOnD,sEAAkE;
|
|
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;
|
|
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,39 @@
|
|
|
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
|
+
permissions?: {
|
|
24
|
+
identifier: string;
|
|
25
|
+
scope_id: string;
|
|
26
|
+
}[];
|
|
27
|
+
}
|
|
28
|
+
export interface EffectiveAccess {
|
|
29
|
+
roles: string[];
|
|
30
|
+
permissions: string[];
|
|
31
|
+
grantable_scopes: string[];
|
|
32
|
+
is_global_admin: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface RoleCatalogueLoadOptions {
|
|
35
|
+
tenantId?: string | null;
|
|
36
|
+
scopeIds?: Set<string>;
|
|
37
|
+
withPermissions?: boolean;
|
|
38
|
+
}
|
|
39
|
+
//# 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;IAE1B,WAAW,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1D;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 @@
|
|
|
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;AAOxC,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;WAyDZ,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,91 @@
|
|
|
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 permission_entity_1 = require("../entities/permission.entity");
|
|
6
|
+
const role_permission_entity_1 = require("../entities/role.permission.entity");
|
|
7
|
+
const scope_entity_1 = require("../entities/scope.entity");
|
|
8
|
+
const system_role_entity_1 = require("../entities/system.role.entity");
|
|
9
|
+
const user_role_entity_1 = require("../entities/user.role.entity");
|
|
10
|
+
const role_hierarchy_1 = require("./role.hierarchy");
|
|
11
|
+
const scope_cascade_1 = require("./scope.cascade");
|
|
12
|
+
class RoleCatalogue {
|
|
13
|
+
static async load(manager, options = {}) {
|
|
14
|
+
const [roles, scopes, grants, permissions, tenantScopeIds] = await Promise.all([
|
|
15
|
+
manager.find(system_role_entity_1.SystemRoleEntity, {
|
|
16
|
+
where: { is_active: true },
|
|
17
|
+
select: {
|
|
18
|
+
id: true,
|
|
19
|
+
identifier: true,
|
|
20
|
+
name: true,
|
|
21
|
+
description: true,
|
|
22
|
+
scope_id: true,
|
|
23
|
+
priority: true,
|
|
24
|
+
},
|
|
25
|
+
}),
|
|
26
|
+
manager.find(scope_entity_1.ScopeEntity, {
|
|
27
|
+
select: { id: true, identifier: true, parent_id: true },
|
|
28
|
+
}),
|
|
29
|
+
options.withPermissions
|
|
30
|
+
? manager.find(role_permission_entity_1.RolePermissionEntity, {
|
|
31
|
+
relations: { permission: true },
|
|
32
|
+
})
|
|
33
|
+
: Promise.resolve([]),
|
|
34
|
+
options.withPermissions
|
|
35
|
+
? manager.find(permission_entity_1.PermissionEntity, {
|
|
36
|
+
select: { identifier: true, scope_id: true },
|
|
37
|
+
})
|
|
38
|
+
: Promise.resolve([]),
|
|
39
|
+
RoleCatalogue.scopeFilter(manager, options),
|
|
40
|
+
]);
|
|
41
|
+
return new role_hierarchy_1.RoleHierarchy({
|
|
42
|
+
roles: roles.map((role) => ({
|
|
43
|
+
...role,
|
|
44
|
+
scope_id: role.scope_id ?? null,
|
|
45
|
+
})),
|
|
46
|
+
scopes: scopes.map((scope) => ({
|
|
47
|
+
...scope,
|
|
48
|
+
parent_id: scope.parent_id ?? null,
|
|
49
|
+
})),
|
|
50
|
+
grants: grants
|
|
51
|
+
.filter((grant) => !!grant.permission)
|
|
52
|
+
.map((grant) => ({
|
|
53
|
+
role_id: grant.role_id,
|
|
54
|
+
permission: grant.permission.identifier,
|
|
55
|
+
scope_id: grant.permission.scope_id,
|
|
56
|
+
})),
|
|
57
|
+
permissions: permissions.map(({ identifier, scope_id }) => ({
|
|
58
|
+
identifier,
|
|
59
|
+
scope_id,
|
|
60
|
+
})),
|
|
61
|
+
}, tenantScopeIds);
|
|
62
|
+
}
|
|
63
|
+
static async heldRoleIds(manager, userId, tenantId) {
|
|
64
|
+
if (!tenantId)
|
|
65
|
+
return [];
|
|
66
|
+
const grants = await manager.find(user_role_entity_1.UserRoleEntity, {
|
|
67
|
+
where: { user_id: userId, tenant_id: tenantId },
|
|
68
|
+
select: { role_id: true },
|
|
69
|
+
});
|
|
70
|
+
return grants.map((grant) => grant.role_id);
|
|
71
|
+
}
|
|
72
|
+
static async keyRoleIds(manager, apiKeyId) {
|
|
73
|
+
const grants = await manager.find(api_key_role_entity_1.ApiKeyRoleEntity, {
|
|
74
|
+
where: { api_key_id: apiKeyId },
|
|
75
|
+
select: { role_id: true },
|
|
76
|
+
});
|
|
77
|
+
return grants.map((grant) => grant.role_id);
|
|
78
|
+
}
|
|
79
|
+
static async scopeFilter(manager, options) {
|
|
80
|
+
if (options.scopeIds)
|
|
81
|
+
return options.scopeIds;
|
|
82
|
+
if (options.tenantId === undefined)
|
|
83
|
+
return undefined;
|
|
84
|
+
if (!options.tenantId)
|
|
85
|
+
return new Set();
|
|
86
|
+
const scopes = await scope_cascade_1.ScopeCascade.tenantEffective(manager, options.tenantId);
|
|
87
|
+
return new Set(scopes.map((scope) => scope.id));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.RoleCatalogue = RoleCatalogue;
|
|
91
|
+
//# 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,33 @@
|
|
|
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
|
+
knowsRole(identifier: string): boolean;
|
|
12
|
+
knowsPermission(permission: string): boolean;
|
|
13
|
+
role(roleId: string): HierarchyRole | undefined;
|
|
14
|
+
scope(scopeId: string): HierarchyScope | undefined;
|
|
15
|
+
allRoles(): HierarchyRole[];
|
|
16
|
+
effective(heldRoleIds: Iterable<string>): HierarchyRole[];
|
|
17
|
+
static isGlobalAdmin(role: Pick<HierarchyRole, 'identifier'>): boolean;
|
|
18
|
+
holdsGlobalAdmin(heldRoleIds: Iterable<string>): boolean;
|
|
19
|
+
covers(held: HierarchyRole, required: HierarchyRole): boolean;
|
|
20
|
+
satisfiesRole(heldRoleIds: Iterable<string>, identifier: string): boolean;
|
|
21
|
+
coveredRoles(heldRoleIds: Iterable<string>): HierarchyRole[];
|
|
22
|
+
permissionsOf(heldRoleIds: Iterable<string>): Set<string>;
|
|
23
|
+
holdsPermission(heldRoleIds: Iterable<string>, permission: string): boolean;
|
|
24
|
+
isTopRole(role: Pick<HierarchyRole, 'identifier' | 'scope_id' | 'priority'>): boolean;
|
|
25
|
+
administers(heldRoleIds: Iterable<string>, scopeId: string): boolean;
|
|
26
|
+
canGrant(heldRoleIds: Iterable<string>, roleId: string): boolean;
|
|
27
|
+
grantableRoles(heldRoleIds: Iterable<string>): HierarchyRole[];
|
|
28
|
+
hasGrantAuthority(heldRoleIds: Iterable<string>): boolean;
|
|
29
|
+
grantableScopes(heldRoleIds: Iterable<string>): HierarchyScope[];
|
|
30
|
+
access(heldRoleIds: Iterable<string>, actsAsGlobalAdmin?: boolean): EffectiveAccess;
|
|
31
|
+
private scopesWithRoles;
|
|
32
|
+
}
|
|
33
|
+
//# 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;IAoCjE,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAKtC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAK5C,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;IAgB7D,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IASzE,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;IAczD,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAM3E,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,158 @@
|
|
|
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([
|
|
28
|
+
...grants.map((grant) => grant.permission),
|
|
29
|
+
...(data.permissions ?? [])
|
|
30
|
+
.filter((permission) => inTenant(permission.scope_id))
|
|
31
|
+
.map((permission) => permission.identifier),
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
knowsRole(identifier) {
|
|
35
|
+
return this.roleByIdentifier.has(identifier);
|
|
36
|
+
}
|
|
37
|
+
knowsPermission(permission) {
|
|
38
|
+
return this.permissions.has(permission);
|
|
39
|
+
}
|
|
40
|
+
role(roleId) {
|
|
41
|
+
return this.roleById.get(roleId);
|
|
42
|
+
}
|
|
43
|
+
scope(scopeId) {
|
|
44
|
+
return this.scopeById.get(scopeId);
|
|
45
|
+
}
|
|
46
|
+
allRoles() {
|
|
47
|
+
return [...this.roles];
|
|
48
|
+
}
|
|
49
|
+
effective(heldRoleIds) {
|
|
50
|
+
const held = new Map();
|
|
51
|
+
for (const roleId of heldRoleIds) {
|
|
52
|
+
const role = this.roleById.get(roleId);
|
|
53
|
+
if (role)
|
|
54
|
+
held.set(role.id, role);
|
|
55
|
+
}
|
|
56
|
+
return [...held.values()];
|
|
57
|
+
}
|
|
58
|
+
static isGlobalAdmin(role) {
|
|
59
|
+
return role.identifier === String(tenant_role_enum_1.TenantRole.GLOBAL_ADMIN);
|
|
60
|
+
}
|
|
61
|
+
holdsGlobalAdmin(heldRoleIds) {
|
|
62
|
+
return this.effective(heldRoleIds).some((role) => RoleHierarchy.isGlobalAdmin(role));
|
|
63
|
+
}
|
|
64
|
+
covers(held, required) {
|
|
65
|
+
if (RoleHierarchy.isGlobalAdmin(held) || held.id === required.id)
|
|
66
|
+
return true;
|
|
67
|
+
if (!held.scope_id || !required.scope_id)
|
|
68
|
+
return false;
|
|
69
|
+
if (held.priority > required.priority)
|
|
70
|
+
return false;
|
|
71
|
+
return (held.scope_id === required.scope_id ||
|
|
72
|
+
held.scope_id === this.scopeById.get(required.scope_id)?.parent_id);
|
|
73
|
+
}
|
|
74
|
+
satisfiesRole(heldRoleIds, identifier) {
|
|
75
|
+
const required = this.roleByIdentifier.get(identifier);
|
|
76
|
+
if (!required)
|
|
77
|
+
return false;
|
|
78
|
+
return this.effective(heldRoleIds).some((role) => this.covers(role, required));
|
|
79
|
+
}
|
|
80
|
+
coveredRoles(heldRoleIds) {
|
|
81
|
+
const held = this.effective(heldRoleIds);
|
|
82
|
+
return this.roles.filter((candidate) => held.some((role) => this.covers(role, candidate)));
|
|
83
|
+
}
|
|
84
|
+
permissionsOf(heldRoleIds) {
|
|
85
|
+
const ids = [...heldRoleIds];
|
|
86
|
+
if (this.holdsGlobalAdmin(ids))
|
|
87
|
+
return new Set(this.permissions);
|
|
88
|
+
const reached = new Set();
|
|
89
|
+
for (const role of this.coveredRoles(ids))
|
|
90
|
+
for (const grant of this.grantsByRole.get(role.id) ?? [])
|
|
91
|
+
reached.add(grant.permission);
|
|
92
|
+
return reached;
|
|
93
|
+
}
|
|
94
|
+
holdsPermission(heldRoleIds, permission) {
|
|
95
|
+
if (!this.knowsPermission(permission))
|
|
96
|
+
return false;
|
|
97
|
+
return this.permissionsOf(heldRoleIds).has(permission);
|
|
98
|
+
}
|
|
99
|
+
isTopRole(role) {
|
|
100
|
+
if (!role.scope_id)
|
|
101
|
+
return RoleHierarchy.isGlobalAdmin(role);
|
|
102
|
+
return this.topPriority.get(role.scope_id) === role.priority;
|
|
103
|
+
}
|
|
104
|
+
administers(heldRoleIds, scopeId) {
|
|
105
|
+
const held = this.effective(heldRoleIds);
|
|
106
|
+
if (held.some((role) => RoleHierarchy.isGlobalAdmin(role)))
|
|
107
|
+
return true;
|
|
108
|
+
const parentId = this.scopeById.get(scopeId)?.parent_id;
|
|
109
|
+
return held.some((role) => !!role.scope_id &&
|
|
110
|
+
(role.scope_id === scopeId || role.scope_id === parentId) &&
|
|
111
|
+
this.isTopRole(role));
|
|
112
|
+
}
|
|
113
|
+
canGrant(heldRoleIds, roleId) {
|
|
114
|
+
const target = this.roleById.get(roleId);
|
|
115
|
+
if (!target)
|
|
116
|
+
return false;
|
|
117
|
+
const ids = [...heldRoleIds];
|
|
118
|
+
if (this.holdsGlobalAdmin(ids))
|
|
119
|
+
return true;
|
|
120
|
+
return !!target.scope_id && this.administers(ids, target.scope_id);
|
|
121
|
+
}
|
|
122
|
+
grantableRoles(heldRoleIds) {
|
|
123
|
+
const ids = [...heldRoleIds];
|
|
124
|
+
return this.roles.filter((role) => this.canGrant(ids, role.id));
|
|
125
|
+
}
|
|
126
|
+
hasGrantAuthority(heldRoleIds) {
|
|
127
|
+
return this.grantableRoles(heldRoleIds).length > 0;
|
|
128
|
+
}
|
|
129
|
+
grantableScopes(heldRoleIds) {
|
|
130
|
+
const ids = [...heldRoleIds];
|
|
131
|
+
return this.scopesWithRoles().filter((scope) => this.administers(ids, scope.id));
|
|
132
|
+
}
|
|
133
|
+
access(heldRoleIds, actsAsGlobalAdmin = false) {
|
|
134
|
+
const ids = [...heldRoleIds];
|
|
135
|
+
const isGlobalAdmin = actsAsGlobalAdmin || this.holdsGlobalAdmin(ids);
|
|
136
|
+
const scopes = isGlobalAdmin
|
|
137
|
+
? this.scopesWithRoles()
|
|
138
|
+
: this.grantableScopes(ids);
|
|
139
|
+
return {
|
|
140
|
+
roles: this.effective(ids).map((role) => role.identifier),
|
|
141
|
+
permissions: [
|
|
142
|
+
...(isGlobalAdmin ? this.permissions : this.permissionsOf(ids)),
|
|
143
|
+
].sort(),
|
|
144
|
+
grantable_scopes: scopes.map((scope) => scope.identifier).sort(),
|
|
145
|
+
is_global_admin: isGlobalAdmin,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
scopesWithRoles() {
|
|
149
|
+
const scopeIds = new Set(this.roles
|
|
150
|
+
.map((role) => role.scope_id)
|
|
151
|
+
.filter((scopeId) => !!scopeId));
|
|
152
|
+
return [...scopeIds]
|
|
153
|
+
.map((scopeId) => this.scopeById.get(scopeId))
|
|
154
|
+
.filter((scope) => !!scope);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.RoleHierarchy = RoleHierarchy;
|
|
158
|
+
//# 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;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC;YACzB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;iBACxB,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;iBACrD,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC;IAGD,SAAS,CAAC,UAAkB;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAGD,eAAe,CAAC,UAAkB;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,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;IAOD,aAAa,CAAC,WAA6B,EAAE,UAAkB;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAC5B,CAAC;IACJ,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;IAMD,eAAe,CAAC,WAA6B,EAAE,UAAkB;QAC/D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QACpD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzD,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;AAvOD,sCAuOC"}
|
|
@@ -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;
|
|
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"}
|