@nu-art/permissions-backend 0.401.9 → 0.500.6

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 (85) hide show
  1. package/RequirePermission.d.ts +33 -0
  2. package/RequirePermission.js +56 -0
  3. package/_entity/access-group/ModuleBE_AccessGroupDB.d.ts +13 -0
  4. package/_entity/access-group/ModuleBE_AccessGroupDB.js +36 -0
  5. package/_entity/access-group/module-pack.d.ts +1 -0
  6. package/_entity/access-group/module-pack.js +3 -0
  7. package/_entity/permission-scope/ModuleBE_PermissionScopeDB.d.ts +6 -0
  8. package/_entity/permission-scope/ModuleBE_PermissionScopeDB.js +8 -0
  9. package/_entity/permission-scope/module-pack.d.ts +1 -0
  10. package/_entity/permission-scope/module-pack.js +3 -0
  11. package/_entity/user-permissions/ModuleBE_UserPermissionsAPI.d.ts +9 -0
  12. package/_entity/user-permissions/ModuleBE_UserPermissionsAPI.js +67 -0
  13. package/_entity/user-permissions/ModuleBE_UserPermissionsDB.d.ts +6 -0
  14. package/_entity/user-permissions/ModuleBE_UserPermissionsDB.js +8 -0
  15. package/_entity/user-permissions/module-pack.d.ts +2 -0
  16. package/_entity/user-permissions/module-pack.js +3 -0
  17. package/assertion-types.d.ts +9 -0
  18. package/consts.d.ts +7 -4
  19. package/consts.js +4 -2
  20. package/core/function-permission-registry.d.ts +24 -0
  21. package/core/function-permission-registry.js +60 -0
  22. package/core/module-pack.js +6 -7
  23. package/document-access-api.d.ts +6 -0
  24. package/document-access-api.js +49 -0
  25. package/document-access-enforcement.d.ts +9 -0
  26. package/document-access-enforcement.js +137 -0
  27. package/index.d.ts +14 -3
  28. package/index.js +14 -3
  29. package/modules/ModuleBE_Permissions.d.ts +63 -72
  30. package/modules/ModuleBE_Permissions.js +493 -339
  31. package/modules/ModuleBE_PermissionsAssert.d.ts +7 -38
  32. package/modules/ModuleBE_PermissionsAssert.js +53 -212
  33. package/package.json +16 -12
  34. package/PermissionKey_BE.d.ts +0 -13
  35. package/PermissionKey_BE.js +0 -48
  36. package/_entity/permission-access-level/ModuleBE_PermissionAccessLevelDB.d.ts +0 -17
  37. package/_entity/permission-access-level/ModuleBE_PermissionAccessLevelDB.js +0 -55
  38. package/_entity/permission-access-level/index.d.ts +0 -2
  39. package/_entity/permission-access-level/index.js +0 -2
  40. package/_entity/permission-access-level/module-pack.d.ts +0 -1
  41. package/_entity/permission-access-level/module-pack.js +0 -3
  42. package/_entity/permission-api/ModuleBE_PermissionAPIDB.d.ts +0 -12
  43. package/_entity/permission-api/ModuleBE_PermissionAPIDB.js +0 -62
  44. package/_entity/permission-api/index.d.ts +0 -2
  45. package/_entity/permission-api/index.js +0 -2
  46. package/_entity/permission-api/module-pack.d.ts +0 -1
  47. package/_entity/permission-api/module-pack.js +0 -3
  48. package/_entity/permission-domain/ModuleBE_PermissionDomainDB.d.ts +0 -15
  49. package/_entity/permission-domain/ModuleBE_PermissionDomainDB.js +0 -25
  50. package/_entity/permission-domain/index.d.ts +0 -2
  51. package/_entity/permission-domain/index.js +0 -2
  52. package/_entity/permission-domain/module-pack.d.ts +0 -1
  53. package/_entity/permission-domain/module-pack.js +0 -3
  54. package/_entity/permission-group/ModuleBE_PermissionGroupDB.d.ts +0 -14
  55. package/_entity/permission-group/ModuleBE_PermissionGroupDB.js +0 -62
  56. package/_entity/permission-group/index.d.ts +0 -2
  57. package/_entity/permission-group/index.js +0 -2
  58. package/_entity/permission-group/module-pack.d.ts +0 -1
  59. package/_entity/permission-group/module-pack.js +0 -3
  60. package/_entity/permission-project/ModuleBE_PermissionProjectDB.d.ts +0 -10
  61. package/_entity/permission-project/ModuleBE_PermissionProjectDB.js +0 -12
  62. package/_entity/permission-project/index.d.ts +0 -2
  63. package/_entity/permission-project/index.js +0 -2
  64. package/_entity/permission-project/module-pack.d.ts +0 -1
  65. package/_entity/permission-project/module-pack.js +0 -3
  66. package/_entity/permission-user/ModuleBE_PermissionUserAPI.d.ts +0 -8
  67. package/_entity/permission-user/ModuleBE_PermissionUserAPI.js +0 -13
  68. package/_entity/permission-user/ModuleBE_PermissionUserDB.d.ts +0 -37
  69. package/_entity/permission-user/ModuleBE_PermissionUserDB.js +0 -228
  70. package/_entity/permission-user/index.d.ts +0 -3
  71. package/_entity/permission-user/index.js +0 -3
  72. package/_entity/permission-user/module-pack.d.ts +0 -2
  73. package/_entity/permission-user/module-pack.js +0 -3
  74. package/_entity.d.ts +0 -12
  75. package/_entity.js +0 -18
  76. package/core/utils.d.ts +0 -25
  77. package/core/utils.js +0 -85
  78. package/modules/consts.d.ts +0 -11
  79. package/modules/consts.js +0 -29
  80. package/modules/index.d.ts +0 -1
  81. package/modules/index.js +0 -19
  82. package/permissions.d.ts +0 -23
  83. package/permissions.js +0 -159
  84. package/types.d.ts +0 -28
  85. /package/{types.js → assertion-types.js} +0 -0
package/index.d.ts CHANGED
@@ -1,4 +1,15 @@
1
1
  export * from './core/module-pack.js';
2
- export * from './modules/index.js';
3
- export * from './_entity.js';
4
- export * from './types.js';
2
+ export * from './core/function-permission-registry.js';
3
+ export * from './assertion-types.js';
4
+ export * from './RequirePermission.js';
5
+ export * from './modules/ModuleBE_Permissions.js';
6
+ export * from './modules/ModuleBE_PermissionsAssert.js';
7
+ export * from './_entity/permission-scope/ModuleBE_PermissionScopeDB.js';
8
+ export * from './_entity/permission-scope/module-pack.js';
9
+ export * from './_entity/user-permissions/ModuleBE_UserPermissionsDB.js';
10
+ export * from './_entity/user-permissions/ModuleBE_UserPermissionsAPI.js';
11
+ export * from './_entity/user-permissions/module-pack.js';
12
+ export * from './_entity/access-group/ModuleBE_AccessGroupDB.js';
13
+ export * from './_entity/access-group/module-pack.js';
14
+ export * from './document-access-enforcement.js';
15
+ export * from './document-access-api.js';
package/index.js CHANGED
@@ -17,6 +17,17 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  export * from './core/module-pack.js';
20
- export * from './modules/index.js';
21
- export * from './_entity.js';
22
- export * from './types.js';
20
+ export * from './core/function-permission-registry.js';
21
+ export * from './assertion-types.js';
22
+ export * from './RequirePermission.js';
23
+ export * from './modules/ModuleBE_Permissions.js';
24
+ export * from './modules/ModuleBE_PermissionsAssert.js';
25
+ export * from './_entity/permission-scope/ModuleBE_PermissionScopeDB.js';
26
+ export * from './_entity/permission-scope/module-pack.js';
27
+ export * from './_entity/user-permissions/ModuleBE_UserPermissionsDB.js';
28
+ export * from './_entity/user-permissions/ModuleBE_UserPermissionsAPI.js';
29
+ export * from './_entity/user-permissions/module-pack.js';
30
+ export * from './_entity/access-group/ModuleBE_AccessGroupDB.js';
31
+ export * from './_entity/access-group/module-pack.js';
32
+ export * from './document-access-enforcement.js';
33
+ export * from './document-access-api.js';
@@ -1,77 +1,68 @@
1
- import { Module, TypedMap } from '@nu-art/ts-common';
2
- import { DB_PermissionGroup, DB_PermissionProject, DefaultDef_Group, SessionData_Permissions } from '@nu-art/permissions-shared';
3
- import { BaseSessionClaims, CollectSessionData } from '@nu-art/user-account-backend';
4
- import { PerformProjectSetup } from '@nu-art/thunderstorm-backend/modules/action-processor/Action_SetupProject';
5
- import { DefaultDef_Project } from '../types.js';
6
- export interface CollectPermissionsProjects {
7
- __collectPermissionsProjects(): DefaultDef_Project;
1
+ import { Module, UniqueId } from '@nu-art/ts-common';
2
+ import type { DB_Prototype } from '@nu-art/db-api-shared';
3
+ import type { ModuleBE_BaseDB } from '@nu-art/db-api-backend';
4
+ import type { DatabaseDef_AccessGroup, DocumentAccessInner } from '@nu-art/permissions-shared';
5
+ import { type PerformProjectSetup, type SetupTask } from '@nu-art/action-processor-backend';
6
+ import type { OnAccessGroupChanged } from '../_entity/access-group/ModuleBE_AccessGroupDB.js';
7
+ import { FirebaseRef } from '@nu-art/firebase-backend';
8
+ import { type AccessContextResolver } from '../document-access-enforcement.js';
9
+ import { OnAccountDeleted, OnUserLogin } from '@nu-art/user-account-backend';
10
+ import { SafeDB_Account } from '@nu-art/user-account-shared';
11
+ export interface ResolveAdditionalGroupMemberships {
12
+ __resolveAdditionalGroupMemberships(accountId: string, context: 'register' | 'login'): Promise<UniqueId[]>;
8
13
  }
9
- export declare const PermissionGroup_Permissions_SuperAdmin: DefaultDef_Group;
10
- export declare const PermissionGroup_Permissions_Viewer: DefaultDef_Group;
11
- export declare const PermissionGroup_Permissions_Editor: DefaultDef_Group;
12
- export declare const PermissionGroup_Account_Manager: DefaultDef_Group;
13
- export declare const PermissionGroup_Account_Admin: DefaultDef_Group;
14
- export declare const PermissionGroup_Account_Viewer: DefaultDef_Group;
15
- export declare const PermissionGroups_Permissions: DefaultDef_Group[];
16
- export declare const PermissionProject_Permissions: DefaultDef_Project;
17
- declare class ModuleBE_Permissions_Class extends Module implements CollectSessionData<SessionData_Permissions>, PerformProjectSetup {
14
+ export type ServiceAccountConfig = {
15
+ readonly scopes: string[];
16
+ readonly enabled: boolean;
17
+ readonly systemOnly: boolean;
18
+ };
19
+ export declare const ServiceAccountId_Bootstrap = "bootstrap-admin";
20
+ type Config = {
21
+ serviceAccounts: Record<string, ServiceAccountConfig>;
22
+ };
23
+ export declare const GroupId_AppDefault: import("@nu-art/db-api-shared").DB_UniqueId<"permissions--access-groups">;
24
+ export declare const GroupId_PermissionsAdmin: import("@nu-art/db-api-shared").DB_UniqueId<"permissions--access-groups">;
25
+ export declare const PermissionsInfraGroupIds: Record<keyof DocumentAccessInner, DatabaseDef_AccessGroup['id']>;
26
+ export declare const SetupTaskKey_PermissionsGroups: import("@nu-art/action-processor-backend").SetupTaskKey;
27
+ declare class ModuleBE_Permissions_Class extends Module<Config> implements PerformProjectSetup, OnAccessGroupChanged, OnUserLogin, OnAccountDeleted {
28
+ private adminGrantFlagRef;
29
+ private readonly accessResolvers;
30
+ private readonly moduleScopeKeys;
31
+ constructor();
32
+ private readonly permissionsAccessResolver;
18
33
  protected init(): void;
19
- __collectSessionData(data: BaseSessionClaims): Promise<SessionData_Permissions>;
20
- getUserPermissionMap: (userGroups: DB_PermissionGroup[]) => Promise<TypedMap<number>>;
21
- toggleStrictMode: () => Promise<void>;
22
- __performProjectSetup(): {
23
- priority: number;
24
- processor: () => Promise<void>;
25
- };
26
- createPermissionProjects(projects: DefaultDef_Project[]): Promise<void>;
27
- /**
28
- * Creates All the DB_PermissionProject
29
- *
30
- * @param projects - predefined permissions projects
31
- */
32
- createProjects(projects: DefaultDef_Project[]): Promise<TypedMap<DB_PermissionProject>>;
33
- /**
34
- * Creates All the DB_PermissionDomains
35
- *
36
- * @param projects - predefined permissions projects
37
- * @param map_nameToDBProject
38
- */
39
- private createDomains;
40
- /**
41
- * Creates All the DB_PermissionAccessLevel
42
- *
43
- * @param projects - predefined permissions projects
44
- * @param map_nameToDbDomain
45
- */
46
- private createAccessLevels;
47
- /**
48
- * Creates All the DB_PermissionGroup
49
- *
50
- * @param projects - predefined permissions projects
51
- * @param map_nameToDbDomain
52
- * @param domainNameToLevelNameToDBAccessLevel
53
- */
54
- private createGroups;
55
- /**
56
- * Creates All the DB_PermissionApi
57
- *
58
- * @param projects - predefined permissions projects
59
- * @param domainNameToLevelNameToDBAccessLevel
60
- */
61
- private createApis;
62
- /**
63
- * Creates permission keys associated with the given projects.
64
- *
65
- * @param projects - An array of projects.
66
- */
67
- private createPermissionsKeys;
68
- /**
69
- * If no "Super Admin" user is defined in the system!
70
- * The first user to press the create project button will become the "Super Admin" of the system
71
- *
72
- * If a "Super Admin" already exists in the system, a 403 will be thrown
73
- */
74
- private assignSuperAdmin;
34
+ setAccessContextResolver<Database extends DB_Prototype>(dbModule: ModuleBE_BaseDB<Database>, resolver: AccessContextResolver<Database>, scopeKeys?: string[]): void;
35
+ private wireDocumentAccessToAllModules;
36
+ getAdminGrantFlagRef(): FirebaseRef<boolean>;
37
+ __performProjectSetup(): SetupTask[];
38
+ ensureDefinedGroups(): Promise<void>;
39
+ __onUserLogin(account: SafeDB_Account): Promise<void>;
40
+ __onAccountDeleted(account: SafeDB_Account): Promise<void>;
41
+ private ensurePersonalAccessGroup;
42
+ private addToDefaultGroup;
43
+ private promoteIfNoAdmin;
44
+ private checkAdminGrantFlag;
45
+ private resolveAdditionalGroupMemberships;
46
+ recomputePermissionsForUsers(accountIds: UniqueId[]): Promise<void>;
47
+ recomputePermissionsForAllUsers(): Promise<void>;
48
+ private materializeFromGroups;
49
+ __onAccessGroupChanged(changedGroupIds: UniqueId[]): Promise<void>;
50
+ rematerializeForGroups(changedGroupIds: UniqueId[]): Promise<void>;
51
+ private walkGroupGraphUp;
52
+ private resolveScopeIdsToStrings;
53
+ private deduplicateScopeEntries;
54
+ runAsServiceAccount<R>(saId: string, action: () => Promise<R>): Promise<R>;
55
+ private resolveSAAccessIds;
56
+ private resolveBootstrapAccessIds;
57
+ private resolveBootstrapScopes;
58
+ private ensureBootstrapSAAccessGroup;
59
+ private ensureServiceAccountAccessGroups;
60
+ private ensurePermissionsInfraAccessGroups;
61
+ private ensureScopeEntities;
62
+ private ensureDefaultGroup;
63
+ private ensurePermissionsAdminGroup;
64
+ private ensureAppDefinedGroups;
65
+ private syncPersonalGroupsForExistingAccounts;
75
66
  }
76
67
  export declare const ModuleBE_Permissions: ModuleBE_Permissions_Class;
77
68
  export {};