@nu-art/permissions-backend 0.500.0 → 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 (88) hide show
  1. package/RequirePermission.d.ts +22 -10
  2. package/RequirePermission.js +24 -15
  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/{permission-user/ModuleBE_PermissionUserAPI.js → user-permissions/ModuleBE_UserPermissionsAPI.js} +17 -16
  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 +5 -6
  21. package/core/function-permission-registry.js +10 -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 +12 -6
  28. package/index.js +12 -6
  29. package/modules/ModuleBE_Permissions.d.ts +63 -78
  30. package/modules/ModuleBE_Permissions.js +494 -441
  31. package/modules/ModuleBE_PermissionsAssert.d.ts +6 -54
  32. package/modules/ModuleBE_PermissionsAssert.js +60 -285
  33. package/package.json +14 -12
  34. package/PermissionKey_BE.d.ts +0 -16
  35. package/PermissionKey_BE.js +0 -59
  36. package/_entity/permission-access-level/ModuleBE_PermissionAccessLevelDB.d.ts +0 -13
  37. package/_entity/permission-access-level/ModuleBE_PermissionAccessLevelDB.js +0 -49
  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 -10
  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 -9
  49. package/_entity/permission-domain/ModuleBE_PermissionDomainDB.js +0 -22
  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 -12
  55. package/_entity/permission-group/ModuleBE_PermissionGroupDB.js +0 -65
  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 -8
  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 -9
  67. package/_entity/permission-user/ModuleBE_PermissionUserDB.d.ts +0 -34
  68. package/_entity/permission-user/ModuleBE_PermissionUserDB.js +0 -241
  69. package/_entity/permission-user/index.d.ts +0 -3
  70. package/_entity/permission-user/index.js +0 -3
  71. package/_entity/permission-user/module-pack.d.ts +0 -2
  72. package/_entity/permission-user/module-pack.js +0 -3
  73. package/_entity.d.ts +0 -12
  74. package/_entity.js +0 -18
  75. package/core/external-api-paths.d.ts +0 -13
  76. package/core/external-api-paths.js +0 -13
  77. package/core/utils.d.ts +0 -25
  78. package/core/utils.js +0 -85
  79. package/modules/consts.d.ts +0 -11
  80. package/modules/consts.js +0 -29
  81. package/modules/index.d.ts +0 -2
  82. package/modules/index.js +0 -20
  83. package/permissions-wire.d.ts +0 -46
  84. package/permissions-wire.js +0 -47
  85. package/permissions.d.ts +0 -22
  86. package/permissions.js +0 -152
  87. package/types.d.ts +0 -28
  88. /package/{types.js → assertion-types.js} +0 -0
package/index.js CHANGED
@@ -16,12 +16,18 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- export * from './consts.js';
20
19
  export * from './core/module-pack.js';
21
- export * from './permissions-wire.js';
22
20
  export * from './core/function-permission-registry.js';
21
+ export * from './assertion-types.js';
23
22
  export * from './RequirePermission.js';
24
- export * from './modules/index.js';
25
- export * from './permissions.js';
26
- export * from './_entity.js';
27
- export * from './types.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,83 +1,68 @@
1
- import { Module, TypedMap } from '@nu-art/ts-common';
2
- import type { PerformProjectSetup } from '@nu-art/permissions-shared';
3
- import { DB_PermissionGroup, DB_PermissionProject, DefaultDef_Group, SessionData_Permissions } from '@nu-art/permissions-shared';
4
- import { BaseSessionClaims, CollectSessionData } from '@nu-art/user-account-backend';
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
- toggleStrictMode(_params?: unknown): Promise<void>;
20
- createProject(_params?: unknown): Promise<void>;
21
- __collectSessionData(data: BaseSessionClaims): Promise<SessionData_Permissions>;
22
- getUserPermissionMap: (userGroups: DB_PermissionGroup[]) => Promise<TypedMap<number>>;
23
- __performProjectSetup(): {
24
- priority: number;
25
- processor: () => Promise<void>;
26
- };
27
- /**
28
- * Creates domains and access levels from the function-permission registry (populated by @RequirePermission decorators).
29
- * New (scopeKey, value) pairs get domains/levels created; not assigned to anyone until explicitly assigned.
30
- */
31
- private createDomainsAndLevelsFromFunctionPermissionRegistry;
32
- createPermissionProjects(projects: DefaultDef_Project[]): Promise<void>;
33
- /**
34
- * Creates All the DB_PermissionProject
35
- *
36
- * @param projects - predefined permissions projects
37
- */
38
- createProjects(projects: DefaultDef_Project[]): Promise<TypedMap<DB_PermissionProject>>;
39
- /**
40
- * Creates All the DB_PermissionDomains
41
- *
42
- * @param projects - predefined permissions projects
43
- * @param map_nameToDBProject
44
- */
45
- private createDomains;
46
- /**
47
- * Creates All the DB_PermissionAccessLevel
48
- *
49
- * @param projects - predefined permissions projects
50
- * @param map_nameToDbDomain
51
- */
52
- private createAccessLevels;
53
- /**
54
- * Creates All the DB_PermissionGroup
55
- *
56
- * @param projects - predefined permissions projects
57
- * @param map_nameToDbDomain
58
- * @param domainNameToLevelNameToDBAccessLevel
59
- */
60
- private createGroups;
61
- /**
62
- * Creates All the DB_PermissionApi (path-based).
63
- * @deprecated API collection deprecated; use function-based permissions and @RequirePermission. Domains/levels from function-permission registry instead.
64
- * @param projects - predefined permissions projects
65
- * @param domainNameToLevelNameToDBAccessLevel
66
- */
67
- private createApis;
68
- /**
69
- * Creates permission keys associated with the given projects.
70
- *
71
- * @param projects - An array of projects.
72
- */
73
- private createPermissionsKeys;
74
- /**
75
- * If no "Super Admin" user is defined in the system!
76
- * The first user to press the create project button will become the "Super Admin" of the system
77
- *
78
- * If a "Super Admin" already exists in the system, a 403 will be thrown
79
- */
80
- 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;
81
66
  }
82
67
  export declare const ModuleBE_Permissions: ModuleBE_Permissions_Class;
83
68
  export {};