@memberjunction/core-entities 5.48.0 → 5.50.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/dist/custom/MJListEntityExtended.d.ts +27 -0
- package/dist/custom/MJListEntityExtended.d.ts.map +1 -0
- package/dist/custom/MJListEntityExtended.js +52 -0
- package/dist/custom/MJListEntityExtended.js.map +1 -0
- package/dist/custom/Permissions/BaseShareEntityExtended.d.ts.map +1 -1
- package/dist/custom/Permissions/BaseShareEntityExtended.js +6 -1
- package/dist/custom/Permissions/BaseShareEntityExtended.js.map +1 -1
- package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.d.ts.map +1 -1
- package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.js +6 -4
- package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.js.map +1 -1
- package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.d.ts.map +1 -1
- package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.js +4 -2
- package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.js.map +1 -1
- package/dist/engines/PermissionEngine.d.ts +14 -0
- package/dist/engines/PermissionEngine.d.ts.map +1 -1
- package/dist/engines/PermissionEngine.js +30 -34
- package/dist/engines/PermissionEngine.js.map +1 -1
- package/dist/engines/UserInfoEngine.d.ts +13 -0
- package/dist/engines/UserInfoEngine.d.ts.map +1 -1
- package/dist/engines/UserInfoEngine.js +23 -5
- package/dist/engines/UserInfoEngine.js.map +1 -1
- package/dist/engines/artifacts.d.ts +87 -12
- package/dist/engines/artifacts.d.ts.map +1 -1
- package/dist/engines/artifacts.js +140 -35
- package/dist/engines/artifacts.js.map +1 -1
- package/dist/engines/conversations.d.ts +128 -0
- package/dist/engines/conversations.d.ts.map +1 -1
- package/dist/engines/conversations.js +152 -2
- package/dist/engines/conversations.js.map +1 -1
- package/dist/engines/knowledgeHubMetadata.d.ts +26 -4
- package/dist/engines/knowledgeHubMetadata.d.ts.map +1 -1
- package/dist/engines/knowledgeHubMetadata.js +70 -16
- package/dist/engines/knowledgeHubMetadata.js.map +1 -1
- package/dist/generated/entity_subclasses.d.ts +1612 -109
- package/dist/generated/entity_subclasses.d.ts.map +1 -1
- package/dist/generated/entity_subclasses.js +2021 -174
- package/dist/generated/entity_subclasses.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { UserInfo } from "@memberjunction/core";
|
|
2
|
+
import { MJListEntity } from "../generated/entity_subclasses.js";
|
|
3
|
+
/**
|
|
4
|
+
* Client-side extension of the Lists entity. Its primary purpose is to host the shared, pure
|
|
5
|
+
* {@link UserCanDelete} authorization rule so BOTH the Angular UI (to enable/disable Delete
|
|
6
|
+
* affordances) and the server-side `MJListEntityServer` (to actually enforce the rule inside
|
|
7
|
+
* `Delete()`) evaluate identical logic from a single source of truth — no drift, and no
|
|
8
|
+
* cross-package re-export (both the client and the server import `@memberjunction/core-entities`
|
|
9
|
+
* directly, per CLAUDE.md rule #5).
|
|
10
|
+
*/
|
|
11
|
+
export declare class MJListEntityExtended extends MJListEntity {
|
|
12
|
+
/**
|
|
13
|
+
* Authorization rule for deleting a List:
|
|
14
|
+
* - a user in the **Developer** or **Integration** role may delete ANY List;
|
|
15
|
+
* - any other user (e.g. the standard **UI** role) may delete a List ONLY if they own it
|
|
16
|
+
* (`List.UserID === user.ID`).
|
|
17
|
+
*
|
|
18
|
+
* Pure and side-effect free so it can be called from both the client (button enable/disable)
|
|
19
|
+
* and the server (hard enforcement). UUID comparison uses {@link UUIDsEqual} to be safe across
|
|
20
|
+
* SQL Server (uppercase) and PostgreSQL (lowercase) casing.
|
|
21
|
+
*
|
|
22
|
+
* @param listOwnerUserID the List's owning UserID (`List.UserID`)
|
|
23
|
+
* @param user the acting user, with `UserRoles` populated; `null`/`undefined` → not allowed
|
|
24
|
+
*/
|
|
25
|
+
static UserCanDelete(listOwnerUserID: string | null | undefined, user: UserInfo | null | undefined): boolean;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=MJListEntityExtended.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJListEntityExtended.d.ts","sourceRoot":"","sources":["../../src/custom/MJListEntityExtended.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAQ9D;;;;;;;GAOG;AACH,qBACa,oBAAqB,SAAQ,YAAY;IAClD;;;;;;;;;;;;OAYG;WACW,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;CAYtH"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { BaseEntity } from "@memberjunction/core";
|
|
8
|
+
import { RegisterClass, UUIDsEqual } from "@memberjunction/global";
|
|
9
|
+
import { MJListEntity } from "../generated/entity_subclasses.js";
|
|
10
|
+
/**
|
|
11
|
+
* Roles whose members may delete ANY List, regardless of ownership. Compared case-insensitively
|
|
12
|
+
* (and trimmed) against the user's role names.
|
|
13
|
+
*/
|
|
14
|
+
const LIST_DELETE_PRIVILEGED_ROLES = ['developer', 'integration'];
|
|
15
|
+
/**
|
|
16
|
+
* Client-side extension of the Lists entity. Its primary purpose is to host the shared, pure
|
|
17
|
+
* {@link UserCanDelete} authorization rule so BOTH the Angular UI (to enable/disable Delete
|
|
18
|
+
* affordances) and the server-side `MJListEntityServer` (to actually enforce the rule inside
|
|
19
|
+
* `Delete()`) evaluate identical logic from a single source of truth — no drift, and no
|
|
20
|
+
* cross-package re-export (both the client and the server import `@memberjunction/core-entities`
|
|
21
|
+
* directly, per CLAUDE.md rule #5).
|
|
22
|
+
*/
|
|
23
|
+
let MJListEntityExtended = class MJListEntityExtended extends MJListEntity {
|
|
24
|
+
/**
|
|
25
|
+
* Authorization rule for deleting a List:
|
|
26
|
+
* - a user in the **Developer** or **Integration** role may delete ANY List;
|
|
27
|
+
* - any other user (e.g. the standard **UI** role) may delete a List ONLY if they own it
|
|
28
|
+
* (`List.UserID === user.ID`).
|
|
29
|
+
*
|
|
30
|
+
* Pure and side-effect free so it can be called from both the client (button enable/disable)
|
|
31
|
+
* and the server (hard enforcement). UUID comparison uses {@link UUIDsEqual} to be safe across
|
|
32
|
+
* SQL Server (uppercase) and PostgreSQL (lowercase) casing.
|
|
33
|
+
*
|
|
34
|
+
* @param listOwnerUserID the List's owning UserID (`List.UserID`)
|
|
35
|
+
* @param user the acting user, with `UserRoles` populated; `null`/`undefined` → not allowed
|
|
36
|
+
*/
|
|
37
|
+
static UserCanDelete(listOwnerUserID, user) {
|
|
38
|
+
if (!user) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
const hasPrivilegedRole = (user.UserRoles ?? []).some(ur => LIST_DELETE_PRIVILEGED_ROLES.includes((ur.Role ?? '').trim().toLowerCase()));
|
|
42
|
+
if (hasPrivilegedRole) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return UUIDsEqual(listOwnerUserID, user.ID);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
MJListEntityExtended = __decorate([
|
|
49
|
+
RegisterClass(BaseEntity, 'MJ: Lists')
|
|
50
|
+
], MJListEntityExtended);
|
|
51
|
+
export { MJListEntityExtended };
|
|
52
|
+
//# sourceMappingURL=MJListEntityExtended.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJListEntityExtended.js","sourceRoot":"","sources":["../../src/custom/MJListEntityExtended.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAY,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D;;;GAGG;AACH,MAAM,4BAA4B,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAElE;;;;;;;GAOG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,YAAY;IAClD;;;;;;;;;;;;OAYG;IACI,MAAM,CAAC,aAAa,CAAC,eAA0C,EAAE,IAAiC;QACrG,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CACjD,EAAE,CAAC,EAAE,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CACpF,CAAC;QACF,IAAI,iBAAiB,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;CACJ,CAAA;AA1BY,oBAAoB;IADhC,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC;GAC1B,oBAAoB,CA0BhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseShareEntityExtended.d.ts","sourceRoot":"","sources":["../../../src/custom/Permissions/BaseShareEntityExtended.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"BaseShareEntityExtended.d.ts","sourceRoot":"","sources":["../../../src/custom/Permissions/BaseShareEntityExtended.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,EAAY,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGpJ,OAAO,EAA2B,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACtC,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,GACzC,OAAO,CAIT;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,kCAAkC,CACpD,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,OAAO,EACnB,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,cAAc,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,sBAAsB,GAAG,IAAI,GAC3I,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,CAM7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,OAAO,EACnB,UAAU,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAC5C,MAAM,GAAE,MAA0F,GACnG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAY5B;AAoBD,0FAA0F;AAC1F,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EntityPermissionType, EntitySaveOptions, LogError } from '@memberjunction/core';
|
|
1
|
+
import { BaseEntityResult, EntityPermissionType, EntitySaveOptions, LogError } from '@memberjunction/core';
|
|
2
2
|
import { UUIDsEqual } from '@memberjunction/global';
|
|
3
3
|
import { CreateShareNotification } from './shareNotification.js';
|
|
4
4
|
/**
|
|
@@ -155,6 +155,11 @@ function failSave(entity, user, reason) {
|
|
|
155
155
|
latest.Success = false;
|
|
156
156
|
latest.Message = reason;
|
|
157
157
|
}
|
|
158
|
+
else {
|
|
159
|
+
// The gate fires before super.Save(), so a new entity has no result history yet
|
|
160
|
+
// (LatestResult is null) — push one so the reason reaches callers/resolvers.
|
|
161
|
+
entity.ResultHistory.push(new BaseEntityResult(false, reason, 'create'));
|
|
162
|
+
}
|
|
158
163
|
return false;
|
|
159
164
|
}
|
|
160
165
|
/** Re-export for ergonomic `import { EntityPermissionType } from '...'` in subclasses. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseShareEntityExtended.js","sourceRoot":"","sources":["../../../src/custom/Permissions/BaseShareEntityExtended.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,oBAAoB,EAAE,iBAAiB,EAAqB,QAAQ,EAAY,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseShareEntityExtended.js","sourceRoot":"","sources":["../../../src/custom/Permissions/BaseShareEntityExtended.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJArtifactPermissionEntityExtended.d.ts","sourceRoot":"","sources":["../../../src/custom/Permissions/MJArtifactPermissionEntityExtended.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,oBAAoB,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"MJArtifactPermissionEntityExtended.d.ts","sourceRoot":"","sources":["../../../src/custom/Permissions/MJArtifactPermissionEntityExtended.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,oBAAoB,EAAE,iBAAiB,EAA8B,MAAM,sBAAsB,CAAC;AAGvH,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAQ/E;;;GAGG;AACH,qBACa,kCAAmC,SAAQ,0BAA0B;IACrE,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO;IAQpE,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAgClE,OAAO,CAAC,cAAc;IAStB;;;;;OAKG;YACW,sBAAsB;YA+BtB,iBAAiB;CAWlC;AAED,+EAA+E;AAC/E,wBAAgB,sCAAsC,IAAI,IAAI,CAE7D"}
|
|
@@ -65,7 +65,9 @@ let MJArtifactPermissionEntityExtended = class MJArtifactPermissionEntityExtende
|
|
|
65
65
|
const user = this.ContextCurrentUser;
|
|
66
66
|
if (!user)
|
|
67
67
|
return false;
|
|
68
|
-
|
|
68
|
+
// Must use this entity's provider and pass the caller as contextUser — the
|
|
69
|
+
// server's global provider has no CurrentUser, so an unscoped RunView fails there.
|
|
70
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
69
71
|
// One round-trip: fetch the artifact's owner AND any existing Share-capable
|
|
70
72
|
// permission row for this caller on this artifact.
|
|
71
73
|
const [ownerResult, grantResult] = await rv.RunViews([
|
|
@@ -83,7 +85,7 @@ let MJArtifactPermissionEntityExtended = class MJArtifactPermissionEntityExtende
|
|
|
83
85
|
MaxRows: 1,
|
|
84
86
|
ResultType: 'simple',
|
|
85
87
|
},
|
|
86
|
-
]);
|
|
88
|
+
], user);
|
|
87
89
|
const ownerId = ownerResult.Success
|
|
88
90
|
? ownerResult.Results?.[0]?.UserID
|
|
89
91
|
: undefined;
|
|
@@ -92,14 +94,14 @@ let MJArtifactPermissionEntityExtended = class MJArtifactPermissionEntityExtende
|
|
|
92
94
|
return grantResult.Success && (grantResult.Results?.length ?? 0) > 0;
|
|
93
95
|
}
|
|
94
96
|
async fetchArtifactName() {
|
|
95
|
-
const rv =
|
|
97
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
96
98
|
const result = await rv.RunView({
|
|
97
99
|
EntityName: 'MJ: Artifacts',
|
|
98
100
|
ExtraFilter: `ID='${this.ArtifactID}'`,
|
|
99
101
|
Fields: ['ID', 'Name'],
|
|
100
102
|
MaxRows: 1,
|
|
101
103
|
ResultType: 'simple',
|
|
102
|
-
});
|
|
104
|
+
}, this.ContextCurrentUser);
|
|
103
105
|
return result.Success ? result.Results?.[0]?.Name ?? null : null;
|
|
104
106
|
}
|
|
105
107
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJArtifactPermissionEntityExtended.js","sourceRoot":"","sources":["../../../src/custom/Permissions/MJArtifactPermissionEntityExtended.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"MJArtifactPermissionEntityExtended.js","sourceRoot":"","sources":["../../../src/custom/Permissions/MJArtifactPermissionEntityExtended.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJCollectionPermissionEntityExtended.d.ts","sourceRoot":"","sources":["../../../src/custom/Permissions/MJCollectionPermissionEntityExtended.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,oBAAoB,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"MJCollectionPermissionEntityExtended.d.ts","sourceRoot":"","sources":["../../../src/custom/Permissions/MJCollectionPermissionEntityExtended.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,oBAAoB,EAAE,iBAAiB,EAA8B,MAAM,sBAAsB,CAAC;AAGvH,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAQjF;;;;;;;;GAQG;AACH,qBACa,oCAAqC,SAAQ,4BAA4B;IACzE,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO;IAQpE,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BlE,OAAO,CAAC,cAAc;IAStB;;;;OAIG;YACW,wBAAwB;CA4BzC;AAED,+EAA+E;AAC/E,wBAAgB,wCAAwC,IAAI,IAAI,CAE/D"}
|
|
@@ -65,7 +65,9 @@ let MJCollectionPermissionEntityExtended = class MJCollectionPermissionEntityExt
|
|
|
65
65
|
const user = this.ContextCurrentUser;
|
|
66
66
|
if (!user)
|
|
67
67
|
return false;
|
|
68
|
-
|
|
68
|
+
// Must use this entity's provider and pass the caller as contextUser — the
|
|
69
|
+
// server's global provider has no CurrentUser, so an unscoped RunView fails there.
|
|
70
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
69
71
|
const [ownerResult, grantResult] = await rv.RunViews([
|
|
70
72
|
{
|
|
71
73
|
EntityName: 'MJ: Collections',
|
|
@@ -81,7 +83,7 @@ let MJCollectionPermissionEntityExtended = class MJCollectionPermissionEntityExt
|
|
|
81
83
|
MaxRows: 1,
|
|
82
84
|
ResultType: 'simple',
|
|
83
85
|
},
|
|
84
|
-
]);
|
|
86
|
+
], user);
|
|
85
87
|
const ownerId = ownerResult.Success
|
|
86
88
|
? ownerResult.Results?.[0]?.OwnerID
|
|
87
89
|
: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJCollectionPermissionEntityExtended.js","sourceRoot":"","sources":["../../../src/custom/Permissions/MJCollectionPermissionEntityExtended.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"MJCollectionPermissionEntityExtended.js","sourceRoot":"","sources":["../../../src/custom/Permissions/MJCollectionPermissionEntityExtended.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,20 @@ export declare class PermissionEngine extends BaseEngine<PermissionEngine> {
|
|
|
58
58
|
* Powers the Sharing Center "User Access Report" view.
|
|
59
59
|
*/
|
|
60
60
|
GetAllUserPermissions(user: UserInfo): Promise<NormalizedPermission[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Runs `invoke` against every registered provider in parallel and concatenates the results,
|
|
63
|
+
* isolating per-provider failures so one broken domain degrades to "contributes nothing"
|
|
64
|
+
* rather than rejecting the whole aggregate.
|
|
65
|
+
*
|
|
66
|
+
* The `Promise.resolve().then(...)` wrapper is load-bearing and NOT ceremony: `allSettled`
|
|
67
|
+
* only isolates *rejections*, but a mapper that throws SYNCHRONOUSLY (the classic case being a
|
|
68
|
+
* provider whose method is `undefined`, e.g. a hollow stub) throws inside `.map()` — before
|
|
69
|
+
* `allSettled` is ever called — and rejects the entire call. Deferring the invocation into a
|
|
70
|
+
* promise body converts that synchronous throw into a rejection `allSettled` can contain.
|
|
71
|
+
* Defense in depth: `instantiateProviders` should prevent hollow providers from being
|
|
72
|
+
* installed at all, but this fan-out must not be the thing that fails if one ever slips in.
|
|
73
|
+
*/
|
|
74
|
+
private fanOutAcrossProviders;
|
|
61
75
|
/**
|
|
62
76
|
* Aggregate every permission this user has granted to *other* users across all
|
|
63
77
|
* registered providers. Powers the end-user Sharing Center's "Shared by me" tab.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionEngine.d.ts","sourceRoot":"","sources":["../../src/engines/PermissionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EAEV,iBAAiB,EAGjB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EAErB,sBAAsB,EAGtB,QAAQ,EACX,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAoB1E;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAW1D,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,+BAA+B,qBAAqB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBACa,gBAAiB,SAAQ,UAAU,CAAC,gBAAgB,CAAC;IAC9D,WAAkB,QAAQ,IAAI,gBAAgB,CAE7C;IAED,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,UAAU,CAAkD;IAEvD,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAchH;;;OAGG;IACH,OAAO,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"PermissionEngine.d.ts","sourceRoot":"","sources":["../../src/engines/PermissionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EAEV,iBAAiB,EAGjB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EAErB,sBAAsB,EAGtB,QAAQ,EACX,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAoB1E;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAW1D,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,+BAA+B,qBAAqB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBACa,gBAAiB,SAAQ,UAAU,CAAC,gBAAgB,CAAC;IAC9D,WAAkB,QAAQ,IAAI,gBAAgB,CAE7C;IAED,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,UAAU,CAAkD;IAEvD,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAchH;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;;;OAIG;IACU,eAAe,CACxB,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,MAAM,EAAE,gBAAgB,GACzB,OAAO,CAAC,qBAAqB,CAAC;IAYjC;;;;OAIG;IACU,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAInF;;;;;;;;;;;;OAYG;YACW,qBAAqB;IAmBnC;;;;;;;OAOG;IACU,2BAA2B,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAI5F;;;;OAIG;IACU,4BAA4B,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAI7F;;;OAGG;IACU,sBAAsB,CAC/B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAMlC,iDAAiD;IACjD,IAAW,OAAO,IAAI,wBAAwB,EAAE,CAE/C;IAED,6FAA6F;IACtF,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAI1E;;;;;;OAMG;IACI,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,MAAM,EAAE;IAInF;;;;OAIG;WACW,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIvD,wEAAwE;IACjE,uBAAuB,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,IAAI;IAIpF;;;;;;;;;;;;;;;;OAgBG;IACU,gBAAgB,CACzB,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,MAAM,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC;IAOhB;;;;;;;;;OASG;IACU,gBAAgB,CAAC,MAAM,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAkDlG;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;CAMjC"}
|
|
@@ -100,13 +100,19 @@ let PermissionEngine = class PermissionEngine extends BaseEngine {
|
|
|
100
100
|
const activeDomains = this._domains.filter((d) => d.IsActive);
|
|
101
101
|
for (const domain of activeDomains) {
|
|
102
102
|
try {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
// TryCreateInstance (NOT CreateInstance) because CreateInstance never returns null
|
|
104
|
+
// for an unregistered key — it falls back to the anchor base class. Using the
|
|
105
|
+
// explicit-result API is what makes the "skip unresolvable domains" branch below
|
|
106
|
+
// actually reachable, instead of installing a method-less abstract-base stub as a
|
|
107
|
+
// live provider (which then poisons every fan-out in this engine).
|
|
108
|
+
const resolution = MJGlobal.Instance.ClassFactory.TryCreateInstance(PermissionProviderBase, domain.ProviderClassName);
|
|
109
|
+
if (resolution.Resolved && resolution.Instance) {
|
|
110
|
+
this._providers.set(domain.Name, resolution.Instance);
|
|
106
111
|
}
|
|
107
112
|
else {
|
|
108
113
|
LogError(`PermissionEngine: no provider registered for ProviderClassName '${domain.ProviderClassName}' ` +
|
|
109
|
-
`(domain '${domain.Name}'). Domain will be skipped until a provider is registered
|
|
114
|
+
`(domain '${domain.Name}'). Domain will be skipped until a provider is registered. ` +
|
|
115
|
+
`${resolution.Reason ?? ''}`);
|
|
110
116
|
}
|
|
111
117
|
}
|
|
112
118
|
catch (err) {
|
|
@@ -141,8 +147,24 @@ let PermissionEngine = class PermissionEngine extends BaseEngine {
|
|
|
141
147
|
* Powers the Sharing Center "User Access Report" view.
|
|
142
148
|
*/
|
|
143
149
|
async GetAllUserPermissions(user) {
|
|
150
|
+
return this.fanOutAcrossProviders('GetAllUserPermissions', (p) => p.GetUserResources(user));
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Runs `invoke` against every registered provider in parallel and concatenates the results,
|
|
154
|
+
* isolating per-provider failures so one broken domain degrades to "contributes nothing"
|
|
155
|
+
* rather than rejecting the whole aggregate.
|
|
156
|
+
*
|
|
157
|
+
* The `Promise.resolve().then(...)` wrapper is load-bearing and NOT ceremony: `allSettled`
|
|
158
|
+
* only isolates *rejections*, but a mapper that throws SYNCHRONOUSLY (the classic case being a
|
|
159
|
+
* provider whose method is `undefined`, e.g. a hollow stub) throws inside `.map()` — before
|
|
160
|
+
* `allSettled` is ever called — and rejects the entire call. Deferring the invocation into a
|
|
161
|
+
* promise body converts that synchronous throw into a rejection `allSettled` can contain.
|
|
162
|
+
* Defense in depth: `instantiateProviders` should prevent hollow providers from being
|
|
163
|
+
* installed at all, but this fan-out must not be the thing that fails if one ever slips in.
|
|
164
|
+
*/
|
|
165
|
+
async fanOutAcrossProviders(callerName, invoke) {
|
|
144
166
|
const providers = Array.from(this._providers.values());
|
|
145
|
-
const settled = await Promise.allSettled(providers.map((p) =>
|
|
167
|
+
const settled = await Promise.allSettled(providers.map((p) => Promise.resolve().then(() => invoke(p))));
|
|
146
168
|
const results = [];
|
|
147
169
|
settled.forEach((outcome, i) => {
|
|
148
170
|
const provider = providers[i];
|
|
@@ -151,7 +173,7 @@ let PermissionEngine = class PermissionEngine extends BaseEngine {
|
|
|
151
173
|
results.push(...outcome.value);
|
|
152
174
|
}
|
|
153
175
|
else {
|
|
154
|
-
LogError(`PermissionEngine
|
|
176
|
+
LogError(`PermissionEngine.${callerName}: provider '${provider?.DomainName}' threw: ${outcome.reason}`);
|
|
155
177
|
}
|
|
156
178
|
});
|
|
157
179
|
return results;
|
|
@@ -165,20 +187,7 @@ let PermissionEngine = class PermissionEngine extends BaseEngine {
|
|
|
165
187
|
* Providers are queried in parallel; failures are logged and skipped.
|
|
166
188
|
*/
|
|
167
189
|
async GetPermissionsGrantedByUser(grantor) {
|
|
168
|
-
|
|
169
|
-
const settled = await Promise.allSettled(providers.map((p) => p.GetPermissionsGrantedByUser(grantor)));
|
|
170
|
-
const results = [];
|
|
171
|
-
settled.forEach((outcome, i) => {
|
|
172
|
-
const provider = providers[i];
|
|
173
|
-
if (outcome.status === 'fulfilled') {
|
|
174
|
-
if (outcome.value?.length)
|
|
175
|
-
results.push(...outcome.value);
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
LogError(`PermissionEngine.GetPermissionsGrantedByUser: provider '${provider.DomainName}' threw: ${outcome.reason}`);
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
return results;
|
|
190
|
+
return this.fanOutAcrossProviders('GetPermissionsGrantedByUser', (p) => p.GetPermissionsGrantedByUser(grantor));
|
|
182
191
|
}
|
|
183
192
|
/**
|
|
184
193
|
* Aggregate every permission where this user is the grantee AND someone else is the
|
|
@@ -186,20 +195,7 @@ let PermissionEngine = class PermissionEngine extends BaseEngine {
|
|
|
186
195
|
* access. Providers are queried in parallel; failures are logged and skipped.
|
|
187
196
|
*/
|
|
188
197
|
async GetPermissionsSharedWithUser(grantee) {
|
|
189
|
-
|
|
190
|
-
const settled = await Promise.allSettled(providers.map((p) => p.GetPermissionsSharedWithUser(grantee)));
|
|
191
|
-
const results = [];
|
|
192
|
-
settled.forEach((outcome, i) => {
|
|
193
|
-
const provider = providers[i];
|
|
194
|
-
if (outcome.status === 'fulfilled') {
|
|
195
|
-
if (outcome.value?.length)
|
|
196
|
-
results.push(...outcome.value);
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
LogError(`PermissionEngine.GetPermissionsSharedWithUser: provider '${provider.DomainName}' threw: ${outcome.reason}`);
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
return results;
|
|
198
|
+
return this.fanOutAcrossProviders('GetPermissionsSharedWithUser', (p) => p.GetPermissionsSharedWithUser(grantee));
|
|
203
199
|
}
|
|
204
200
|
/**
|
|
205
201
|
* Get every grantee's permissions on a specific resource within a domain.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionEngine.js","sourceRoot":"","sources":["../../src/engines/PermissionEngine.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACH,UAAU,EAGV,QAAQ,EACR,WAAW,EAMX,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,OAAO,GAEV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIlD;;;;GAIG;AACH,MAAM,wBAAwB,GAA6B;IACvD,oBAAoB,EAAE,CAAC,wBAAwB,CAAC;IAChD,mBAAmB,EAAE,CAAC,uBAAuB,CAAC;IAC9C,uBAAuB,EAAE,CAAC,2BAA2B,EAAE,oCAAoC,CAAC;IAC5F,sBAAsB,EAAE,CAAC,0BAA0B,CAAC;IACpD,sBAAsB,EAAE,CAAC,0BAA0B,CAAC;IACpD,wBAAwB,EAAE,CAAC,4BAA4B,CAAC;IACxD,sBAAsB,EAAE,CAAC,0BAA0B,CAAC;IACpD,sBAAsB,EAAE,CAAC,0BAA0B,CAAC;IACpD,mBAAmB,EAAE,CAAC,uBAAuB,CAAC;IAC9C,sBAAsB,EAAE,CAAC,0BAA0B,CAAC;CACvD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC3D,oBAAoB,EAAE,sBAAsB;IAC5C,mBAAmB,EAAE,2BAA2B;IAChD,uBAAuB,EAAE,wBAAwB;IACjD,sBAAsB,EAAE,yBAAyB;IACjD,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,yBAAyB;IACnD,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,iCAAiC;IACzD,mBAAmB,EAAE,8BAA8B;IACnD,sBAAsB,EAAE,kBAAkB;CAC7C,CAAC;AAEF,wFAAwF;AACxF,MAAM,CAAC,MAAM,+BAA+B,GAAG,kBAAkB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEI,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAA4B;IAA3D;;QAKK,aAAQ,GAA+B,EAAE,CAAC;QAC1C,eAAU,GAAwC,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"PermissionEngine.js","sourceRoot":"","sources":["../../src/engines/PermissionEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -349,6 +349,19 @@ export declare class UserInfoEngine extends BaseEngine<UserInfoEngine> {
|
|
|
349
349
|
* @param applicationId - The application ID to find
|
|
350
350
|
*/
|
|
351
351
|
GetApplicationInfo(applicationId: string): ApplicationInfo | undefined;
|
|
352
|
+
/**
|
|
353
|
+
* The canonical "apps a NEW user should receive by default" list: **Active** applications flagged
|
|
354
|
+
* `DefaultForNewUser`, in `DefaultSequence` order. This is the SINGLE source of truth for
|
|
355
|
+
* default-app provisioning (bug F2). Previously the filter was re-implemented in several places
|
|
356
|
+
* that drifted — e.g. the JWT new-user path omitted the `Status === 'Active'` check, so an
|
|
357
|
+
* inactive default app could be provisioned there but not via the client self-heal path. All
|
|
358
|
+
* provisioning paths should call this. Callers that need to skip apps a user already has should
|
|
359
|
+
* filter the result by their existing ApplicationIDs.
|
|
360
|
+
*
|
|
361
|
+
* @param md the metadata source whose `Applications` cache to read (an `IMetadataProvider` or the
|
|
362
|
+
* `Metadata` facade — both expose `Applications`)
|
|
363
|
+
*/
|
|
364
|
+
static GetDefaultApplicationsForNewUser(md: Pick<IMetadataProvider, 'Applications'>): ApplicationInfo[];
|
|
352
365
|
/**
|
|
353
366
|
* Find application info by path or name (case-insensitive).
|
|
354
367
|
* @param pathOrName - The path or name to search for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserInfoEngine.d.ts","sourceRoot":"","sources":["../../src/engines/UserInfoEngine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"UserInfoEngine.d.ts","sourceRoot":"","sources":["../../src/engines/UserInfoEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
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;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var UserInfoEngine_1;
|
|
7
8
|
import { BaseEngine, LogStatus, RegisterForStartup, RunView, } from '@memberjunction/core';
|
|
8
9
|
import { UUIDsEqual } from '@memberjunction/global';
|
|
9
10
|
/**
|
|
@@ -27,7 +28,7 @@ import { UUIDsEqual } from '@memberjunction/global';
|
|
|
27
28
|
* Note: This engine filters all data by the current user's ID automatically.
|
|
28
29
|
* On the server side, you must call Config() with contextUser to specify which user's data to load.
|
|
29
30
|
*/
|
|
30
|
-
let UserInfoEngine = class UserInfoEngine extends BaseEngine {
|
|
31
|
+
let UserInfoEngine = UserInfoEngine_1 = class UserInfoEngine extends BaseEngine {
|
|
31
32
|
constructor() {
|
|
32
33
|
super(...arguments);
|
|
33
34
|
// Private storage for entity data
|
|
@@ -743,6 +744,23 @@ let UserInfoEngine = class UserInfoEngine extends BaseEngine {
|
|
|
743
744
|
const md = this.ProviderToUse;
|
|
744
745
|
return md.Applications.find((a) => UUIDsEqual(a.ID, applicationId));
|
|
745
746
|
}
|
|
747
|
+
/**
|
|
748
|
+
* The canonical "apps a NEW user should receive by default" list: **Active** applications flagged
|
|
749
|
+
* `DefaultForNewUser`, in `DefaultSequence` order. This is the SINGLE source of truth for
|
|
750
|
+
* default-app provisioning (bug F2). Previously the filter was re-implemented in several places
|
|
751
|
+
* that drifted — e.g. the JWT new-user path omitted the `Status === 'Active'` check, so an
|
|
752
|
+
* inactive default app could be provisioned there but not via the client self-heal path. All
|
|
753
|
+
* provisioning paths should call this. Callers that need to skip apps a user already has should
|
|
754
|
+
* filter the result by their existing ApplicationIDs.
|
|
755
|
+
*
|
|
756
|
+
* @param md the metadata source whose `Applications` cache to read (an `IMetadataProvider` or the
|
|
757
|
+
* `Metadata` facade — both expose `Applications`)
|
|
758
|
+
*/
|
|
759
|
+
static GetDefaultApplicationsForNewUser(md) {
|
|
760
|
+
return md.Applications
|
|
761
|
+
.filter((a) => a.DefaultForNewUser && a.Status === 'Active')
|
|
762
|
+
.sort((a, b) => (a.DefaultSequence ?? 100) - (b.DefaultSequence ?? 100));
|
|
763
|
+
}
|
|
746
764
|
/**
|
|
747
765
|
* Find application info by path or name (case-insensitive).
|
|
748
766
|
* @param pathOrName - The path or name to search for
|
|
@@ -1065,9 +1083,9 @@ let UserInfoEngine = class UserInfoEngine extends BaseEngine {
|
|
|
1065
1083
|
}
|
|
1066
1084
|
// Get existing UserApplication records for this user to prevent duplicates
|
|
1067
1085
|
const existingAppIds = new Set(this._UserApplications.filter((ua) => UUIDsEqual(ua.UserID, userId)).map((ua) => ua.ApplicationID));
|
|
1068
|
-
//
|
|
1069
|
-
//
|
|
1070
|
-
const defaultApps = md.
|
|
1086
|
+
// Active apps flagged DefaultForNewUser, in DefaultSequence order (shared source of truth),
|
|
1087
|
+
// then exclude apps that already have UserApplication records for this user.
|
|
1088
|
+
const defaultApps = UserInfoEngine_1.GetDefaultApplicationsForNewUser(md).filter((a) => !existingAppIds.has(a.ID));
|
|
1071
1089
|
if (defaultApps.length === 0) {
|
|
1072
1090
|
console.log('UserInfoEngine.CreateDefaultApplications: No new apps to install (all defaults already exist)');
|
|
1073
1091
|
return [];
|
|
@@ -1128,7 +1146,7 @@ let UserInfoEngine = class UserInfoEngine extends BaseEngine {
|
|
|
1128
1146
|
return this.GetConfigData('_NotificationTypes');
|
|
1129
1147
|
}
|
|
1130
1148
|
};
|
|
1131
|
-
UserInfoEngine = __decorate([
|
|
1149
|
+
UserInfoEngine = UserInfoEngine_1 = __decorate([
|
|
1132
1150
|
RegisterForStartup()
|
|
1133
1151
|
], UserInfoEngine);
|
|
1134
1152
|
export { UserInfoEngine };
|