@memberjunction/core-entities 2.133.0 → 3.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/dist/custom/DashboardEntityExtended.d.ts +13 -0
- package/dist/custom/DashboardEntityExtended.d.ts.map +1 -1
- package/dist/custom/DashboardEntityExtended.js +48 -1
- package/dist/custom/DashboardEntityExtended.js.map +1 -1
- package/dist/custom/UserViewEntity.d.ts.map +1 -1
- package/dist/custom/UserViewEntity.js +7 -3
- package/dist/custom/UserViewEntity.js.map +1 -1
- package/dist/engines/dashboards.d.ts +121 -2
- package/dist/engines/dashboards.d.ts.map +1 -1
- package/dist/engines/dashboards.js +250 -1
- package/dist/engines/dashboards.js.map +1 -1
- package/dist/generated/entity_subclasses.d.ts +1826 -148
- package/dist/generated/entity_subclasses.d.ts.map +1 -1
- package/dist/generated/entity_subclasses.js +2585 -175
- package/dist/generated/entity_subclasses.js.map +1 -1
- package/package.json +5 -5
|
@@ -9,9 +9,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.DashboardEngine = void 0;
|
|
10
10
|
const core_1 = require("@memberjunction/core");
|
|
11
11
|
/**
|
|
12
|
-
* Caching of metadata for dashboards and related data
|
|
12
|
+
* Caching of metadata for dashboards and related data, including permission management
|
|
13
13
|
*/
|
|
14
14
|
let DashboardEngine = class DashboardEngine extends core_1.BaseEngine {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this._dashboards = [];
|
|
18
|
+
this._partTypes = [];
|
|
19
|
+
this._dashboardUserPreferences = [];
|
|
20
|
+
this._dashboardCategories = [];
|
|
21
|
+
this._dashboardUserStates = [];
|
|
22
|
+
this._dashboardPermissions = [];
|
|
23
|
+
this._dashboardCategoryPermissions = [];
|
|
24
|
+
this._dashboardCategoryLinks = [];
|
|
25
|
+
}
|
|
15
26
|
/**
|
|
16
27
|
* Returns the global instance of the class. This is a singleton class, so there is only one instance of it in the application. Do not directly create new instances of it, always use this method to get the instance.
|
|
17
28
|
*/
|
|
@@ -20,6 +31,12 @@ let DashboardEngine = class DashboardEngine extends core_1.BaseEngine {
|
|
|
20
31
|
}
|
|
21
32
|
async Config(forceRefresh, contextUser, provider) {
|
|
22
33
|
const c = [
|
|
34
|
+
{
|
|
35
|
+
Type: 'entity',
|
|
36
|
+
EntityName: "MJ: Dashboard Part Types",
|
|
37
|
+
PropertyName: "_partTypes",
|
|
38
|
+
CacheLocal: true
|
|
39
|
+
},
|
|
23
40
|
{
|
|
24
41
|
Type: 'entity',
|
|
25
42
|
EntityName: 'Dashboards',
|
|
@@ -43,13 +60,37 @@ let DashboardEngine = class DashboardEngine extends core_1.BaseEngine {
|
|
|
43
60
|
EntityName: 'MJ: Dashboard User States',
|
|
44
61
|
PropertyName: "_dashboardUserStates",
|
|
45
62
|
CacheLocal: true
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
Type: 'entity',
|
|
66
|
+
EntityName: 'MJ: Dashboard Permissions',
|
|
67
|
+
PropertyName: "_dashboardPermissions",
|
|
68
|
+
CacheLocal: true
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
Type: 'entity',
|
|
72
|
+
EntityName: 'MJ: Dashboard Category Permissions',
|
|
73
|
+
PropertyName: "_dashboardCategoryPermissions",
|
|
74
|
+
CacheLocal: true
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
Type: 'entity',
|
|
78
|
+
EntityName: 'MJ: Dashboard Category Links',
|
|
79
|
+
PropertyName: "_dashboardCategoryLinks",
|
|
80
|
+
CacheLocal: true
|
|
46
81
|
}
|
|
47
82
|
];
|
|
48
83
|
await this.Load(c, provider, forceRefresh, contextUser);
|
|
49
84
|
}
|
|
85
|
+
// ========================================
|
|
86
|
+
// Getters for cached data
|
|
87
|
+
// ========================================
|
|
50
88
|
get Dashboards() {
|
|
51
89
|
return this._dashboards;
|
|
52
90
|
}
|
|
91
|
+
get DashboardPartTypes() {
|
|
92
|
+
return this._partTypes;
|
|
93
|
+
}
|
|
53
94
|
get DashboardUserPreferences() {
|
|
54
95
|
return this._dashboardUserPreferences;
|
|
55
96
|
}
|
|
@@ -59,6 +100,214 @@ let DashboardEngine = class DashboardEngine extends core_1.BaseEngine {
|
|
|
59
100
|
get DashboardUserStates() {
|
|
60
101
|
return this._dashboardUserStates;
|
|
61
102
|
}
|
|
103
|
+
get DashboardPermissions() {
|
|
104
|
+
return this._dashboardPermissions;
|
|
105
|
+
}
|
|
106
|
+
get DashboardCategoryPermissions() {
|
|
107
|
+
return this._dashboardCategoryPermissions;
|
|
108
|
+
}
|
|
109
|
+
get DashboardCategoryLinks() {
|
|
110
|
+
return this._dashboardCategoryLinks;
|
|
111
|
+
}
|
|
112
|
+
// ========================================
|
|
113
|
+
// Permission Checking Methods
|
|
114
|
+
// ========================================
|
|
115
|
+
/**
|
|
116
|
+
* Gets the effective permissions for a user on a specific dashboard.
|
|
117
|
+
* Permission priority: Owner > Direct Permission > Category Permission
|
|
118
|
+
* @param dashboardId - The ID of the dashboard
|
|
119
|
+
* @param userId - The ID of the user to check permissions for
|
|
120
|
+
* @returns The effective permissions for the user on this dashboard
|
|
121
|
+
*/
|
|
122
|
+
GetDashboardPermissions(dashboardId, userId) {
|
|
123
|
+
const dashboard = this._dashboards.find(d => d.ID === dashboardId);
|
|
124
|
+
// Default: no permissions
|
|
125
|
+
const noPermissions = {
|
|
126
|
+
DashboardID: dashboardId,
|
|
127
|
+
CanRead: false,
|
|
128
|
+
CanEdit: false,
|
|
129
|
+
CanDelete: false,
|
|
130
|
+
CanShare: false,
|
|
131
|
+
IsOwner: false,
|
|
132
|
+
PermissionSource: 'none'
|
|
133
|
+
};
|
|
134
|
+
if (!dashboard) {
|
|
135
|
+
return noPermissions;
|
|
136
|
+
}
|
|
137
|
+
// Check if user is the owner - owners have full permissions
|
|
138
|
+
if (dashboard.UserID === userId) {
|
|
139
|
+
return {
|
|
140
|
+
DashboardID: dashboardId,
|
|
141
|
+
CanRead: true,
|
|
142
|
+
CanEdit: true,
|
|
143
|
+
CanDelete: true,
|
|
144
|
+
CanShare: true,
|
|
145
|
+
IsOwner: true,
|
|
146
|
+
PermissionSource: 'owner'
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
// Check for direct dashboard permission
|
|
150
|
+
const directPermission = this._dashboardPermissions.find(p => p.DashboardID === dashboardId && p.UserID === userId);
|
|
151
|
+
if (directPermission) {
|
|
152
|
+
return {
|
|
153
|
+
DashboardID: dashboardId,
|
|
154
|
+
CanRead: directPermission.CanRead,
|
|
155
|
+
CanEdit: directPermission.CanEdit,
|
|
156
|
+
CanDelete: directPermission.CanDelete,
|
|
157
|
+
CanShare: directPermission.CanShare,
|
|
158
|
+
IsOwner: false,
|
|
159
|
+
PermissionSource: 'direct'
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
// Check for category-level permission (if dashboard has a category)
|
|
163
|
+
if (dashboard.CategoryID) {
|
|
164
|
+
const categoryPermission = this.GetCategoryPermissions(dashboard.CategoryID, userId);
|
|
165
|
+
if (categoryPermission.PermissionSource !== 'none') {
|
|
166
|
+
return {
|
|
167
|
+
DashboardID: dashboardId,
|
|
168
|
+
CanRead: categoryPermission.CanRead,
|
|
169
|
+
CanEdit: categoryPermission.CanEdit,
|
|
170
|
+
// Category permissions don't grant delete on individual dashboards
|
|
171
|
+
CanDelete: false,
|
|
172
|
+
CanShare: false,
|
|
173
|
+
IsOwner: false,
|
|
174
|
+
PermissionSource: 'category'
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return noPermissions;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Gets the effective permissions for a user on a specific dashboard category.
|
|
182
|
+
* @param categoryId - The ID of the category
|
|
183
|
+
* @param userId - The ID of the user to check permissions for
|
|
184
|
+
* @returns The effective permissions for the user on this category
|
|
185
|
+
*/
|
|
186
|
+
GetCategoryPermissions(categoryId, userId) {
|
|
187
|
+
const category = this._dashboardCategories.find(c => c.ID === categoryId);
|
|
188
|
+
// Default: no permissions
|
|
189
|
+
const noPermissions = {
|
|
190
|
+
CategoryID: categoryId,
|
|
191
|
+
CanRead: false,
|
|
192
|
+
CanEdit: false,
|
|
193
|
+
CanAddRemove: false,
|
|
194
|
+
CanShare: false,
|
|
195
|
+
IsOwner: false,
|
|
196
|
+
PermissionSource: 'none'
|
|
197
|
+
};
|
|
198
|
+
if (!category) {
|
|
199
|
+
return noPermissions;
|
|
200
|
+
}
|
|
201
|
+
// Check if user is the owner - owners have full permissions
|
|
202
|
+
if (category.UserID === userId) {
|
|
203
|
+
return {
|
|
204
|
+
CategoryID: categoryId,
|
|
205
|
+
CanRead: true,
|
|
206
|
+
CanEdit: true,
|
|
207
|
+
CanAddRemove: true,
|
|
208
|
+
CanShare: true,
|
|
209
|
+
IsOwner: true,
|
|
210
|
+
PermissionSource: 'owner'
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
// Check for direct category permission
|
|
214
|
+
const directPermission = this._dashboardCategoryPermissions.find(p => p.DashboardCategoryID === categoryId && p.UserID === userId);
|
|
215
|
+
if (directPermission) {
|
|
216
|
+
return {
|
|
217
|
+
CategoryID: categoryId,
|
|
218
|
+
CanRead: directPermission.CanRead,
|
|
219
|
+
CanEdit: directPermission.CanEdit,
|
|
220
|
+
CanAddRemove: directPermission.CanAddRemove,
|
|
221
|
+
CanShare: directPermission.CanShare,
|
|
222
|
+
IsOwner: false,
|
|
223
|
+
PermissionSource: 'direct'
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
return noPermissions;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Checks if a user can read/view a dashboard
|
|
230
|
+
* @param dashboardId - The ID of the dashboard
|
|
231
|
+
* @param userId - The ID of the user
|
|
232
|
+
* @returns true if the user can read the dashboard
|
|
233
|
+
*/
|
|
234
|
+
CanUserReadDashboard(dashboardId, userId) {
|
|
235
|
+
return this.GetDashboardPermissions(dashboardId, userId).CanRead;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Checks if a user can edit a dashboard
|
|
239
|
+
* @param dashboardId - The ID of the dashboard
|
|
240
|
+
* @param userId - The ID of the user
|
|
241
|
+
* @returns true if the user can edit the dashboard
|
|
242
|
+
*/
|
|
243
|
+
CanUserEditDashboard(dashboardId, userId) {
|
|
244
|
+
return this.GetDashboardPermissions(dashboardId, userId).CanEdit;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Checks if a user can delete a dashboard
|
|
248
|
+
* @param dashboardId - The ID of the dashboard
|
|
249
|
+
* @param userId - The ID of the user
|
|
250
|
+
* @returns true if the user can delete the dashboard
|
|
251
|
+
*/
|
|
252
|
+
CanUserDeleteDashboard(dashboardId, userId) {
|
|
253
|
+
return this.GetDashboardPermissions(dashboardId, userId).CanDelete;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Checks if a user can share a dashboard
|
|
257
|
+
* @param dashboardId - The ID of the dashboard
|
|
258
|
+
* @param userId - The ID of the user
|
|
259
|
+
* @returns true if the user can share the dashboard
|
|
260
|
+
*/
|
|
261
|
+
CanUserShareDashboard(dashboardId, userId) {
|
|
262
|
+
return this.GetDashboardPermissions(dashboardId, userId).CanShare;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Gets all dashboards the user has read access to (owned or shared)
|
|
266
|
+
* @param userId - The ID of the user
|
|
267
|
+
* @returns Array of dashboards the user can read
|
|
268
|
+
*/
|
|
269
|
+
GetAccessibleDashboards(userId) {
|
|
270
|
+
return this._dashboards.filter(dashboard => this.CanUserReadDashboard(dashboard.ID, userId));
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Gets all dashboard category links for a user (shared dashboards linked to their folder structure)
|
|
274
|
+
* @param userId - The ID of the user
|
|
275
|
+
* @returns Array of category links for the user
|
|
276
|
+
*/
|
|
277
|
+
GetUserCategoryLinks(userId) {
|
|
278
|
+
return this._dashboardCategoryLinks.filter(link => link.UserID === userId);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Gets the dashboards shared with a specific user (excludes owned dashboards)
|
|
282
|
+
* @param userId - The ID of the user
|
|
283
|
+
* @returns Array of dashboards shared with the user
|
|
284
|
+
*/
|
|
285
|
+
GetSharedDashboards(userId) {
|
|
286
|
+
return this._dashboards.filter(dashboard => {
|
|
287
|
+
// Exclude owned dashboards
|
|
288
|
+
if (dashboard.UserID === userId) {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
// Check if user has read permission
|
|
292
|
+
return this.CanUserReadDashboard(dashboard.ID, userId);
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Gets the users a dashboard is shared with and their permissions
|
|
297
|
+
* @param dashboardId - The ID of the dashboard
|
|
298
|
+
* @returns Array of permission records for this dashboard
|
|
299
|
+
*/
|
|
300
|
+
GetDashboardShares(dashboardId) {
|
|
301
|
+
return this._dashboardPermissions.filter(p => p.DashboardID === dashboardId);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Gets the users a category is shared with and their permissions
|
|
305
|
+
* @param categoryId - The ID of the category
|
|
306
|
+
* @returns Array of permission records for this category
|
|
307
|
+
*/
|
|
308
|
+
GetCategoryShares(categoryId) {
|
|
309
|
+
return this._dashboardCategoryPermissions.filter(p => p.DashboardCategoryID === categoryId);
|
|
310
|
+
}
|
|
62
311
|
};
|
|
63
312
|
exports.DashboardEngine = DashboardEngine;
|
|
64
313
|
exports.DashboardEngine = DashboardEngine = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboards.js","sourceRoot":"","sources":["../../src/engines/dashboards.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+CAA2I;
|
|
1
|
+
{"version":3,"file":"dashboards.js","sourceRoot":"","sources":["../../src/engines/dashboards.ts"],"names":[],"mappings":"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"}
|