@5minds/processcube_engine_sdk 6.1.0-alpha.8 → 6.1.0-alpha.9
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/LICENSE +1 -1
- package/dist/DataModels/Iam/Claims.d.ts +1 -0
- package/dist/DataModels/Iam/IIamService.d.ts +3 -2
- package/dist/DataModels/Iam/Identity.d.ts +1 -3
- package/dist/ProcessModel/ProcessModelParser/BpmnParserService.d.ts +5 -4
- package/dist/commonjs/DataModels/Iam/Claims.js +1 -0
- package/dist/commonjs/DataModels/Iam/Claims.js.map +1 -1
- package/dist/commonjs/ProcessModel/ProcessModelParser/BpmnParserService.js +17 -14
- package/dist/commonjs/ProcessModel/ProcessModelParser/BpmnParserService.js.map +1 -1
- package/package.json +1 -1
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2019-
|
|
3
|
+
Copyright (c) 2019 5Minds IT-Solutions GmbH & Co. KG
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Identity } from './Identity';
|
|
2
2
|
export interface IIamService {
|
|
3
3
|
getAuthorityAddress(): string;
|
|
4
|
-
ensureHasClaim(identity: Identity, claimName: string, claimValue?: string): Promise<void>;
|
|
5
|
-
checkIfUserIsSuperAdmin(identity: Identity): Promise<boolean>;
|
|
4
|
+
ensureHasClaim(identity: Identity, claimName: string, claimValue?: string): void | Promise<void>;
|
|
5
|
+
checkIfUserIsSuperAdmin(identity: Identity): boolean | Promise<boolean>;
|
|
6
|
+
checkIfUserIsObserver(identity: Identity): boolean;
|
|
6
7
|
checkIfTokenIsInternalToken(token: string): boolean;
|
|
7
8
|
checkIfTokenIsRootAccessToken(token: string): boolean;
|
|
8
9
|
}
|
|
@@ -15,9 +15,6 @@
|
|
|
15
15
|
* userId:
|
|
16
16
|
* description: The ID of the auth token's owner.
|
|
17
17
|
* type: string
|
|
18
|
-
* anonymousSessionId:
|
|
19
|
-
* description: The ID of an anonymous session.
|
|
20
|
-
* type: string
|
|
21
18
|
*/
|
|
22
19
|
/**
|
|
23
20
|
* Contains information about an identity.
|
|
@@ -34,6 +31,7 @@ export type Identity = {
|
|
|
34
31
|
/**
|
|
35
32
|
* Optional: The ID of an anonymous session.
|
|
36
33
|
* Should be set, when the auth token belongs to an anonymous user.
|
|
34
|
+
* @deprecated As of v18, Anonymous Sessions are no longer handled by the Engine, but by the authority.
|
|
37
35
|
*/
|
|
38
36
|
anonymousSessionId?: string;
|
|
39
37
|
};
|
|
@@ -13,6 +13,8 @@ export declare class ProcessDefinitionRaw {
|
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* A service that parses, validates and filters ProcessDefinitions and ProcessModels.
|
|
16
|
+
*
|
|
17
|
+
* @deprecated This service has been decommissioned and will be removed in a future major release.
|
|
16
18
|
*/
|
|
17
19
|
export declare class BpmnParserService {
|
|
18
20
|
private bpmnModelParser;
|
|
@@ -66,12 +68,11 @@ export declare class BpmnParserService {
|
|
|
66
68
|
/**
|
|
67
69
|
* Takes a ProcessModel and an Identity and filters out all elements of the ProcessModel that the Identity is not allowed to access.
|
|
68
70
|
*
|
|
69
|
-
* @async
|
|
70
71
|
* @param identity The identity for which to filter out inaccessible elements.
|
|
71
72
|
* @param processModel The ProcessModel to filter.
|
|
72
73
|
* @returns The filtered ProcessModel, or "undefined", if the user is not allowed to access the ProcessModel at all.
|
|
73
74
|
*/
|
|
74
|
-
filterInaccessibleProcessModelElements(identity: Identity, processModel: Model.Process):
|
|
75
|
+
filterInaccessibleProcessModelElements(identity: Identity, processModel: Model.Process): Model.Process;
|
|
75
76
|
/**
|
|
76
77
|
* Takes a laneSet and filters out all lanes that the given identity is not allowed to access.
|
|
77
78
|
*
|
|
@@ -79,7 +80,7 @@ export declare class BpmnParserService {
|
|
|
79
80
|
* @param identity The identity for which to filter the given laneSet.
|
|
80
81
|
* @returns The filtered laneSet.
|
|
81
82
|
*/
|
|
82
|
-
filterOutInaccessibleLanes(laneSet: Model.ProcessElements.LaneSet, identity: Identity):
|
|
83
|
+
filterOutInaccessibleLanes(laneSet: Model.ProcessElements.LaneSet, identity: Identity): Model.ProcessElements.LaneSet;
|
|
83
84
|
/**
|
|
84
85
|
* Compares a laneSet against a list of FlowNodes and returns all FlowNodes that are on any of the given lanes.
|
|
85
86
|
* Useful for determining which FlowNodes a user is allowed to access on a filtered laneSet.
|
|
@@ -96,5 +97,5 @@ export declare class BpmnParserService {
|
|
|
96
97
|
* @returns True, if the ProcessModel has StartEvents; otherwise false.
|
|
97
98
|
*/
|
|
98
99
|
checkIfProcessModelHasAccessibleStartEvents(processModel: Model.Process): boolean;
|
|
99
|
-
private
|
|
100
|
+
private isUserAnAdminOrObserver;
|
|
100
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Claims.js","sourceRoot":"","sources":["../../../../src/DataModels/Iam/Claims.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IACpB,sBAAsB,EAAE,2BAA2B;IACnD,qBAAqB,EAAE,0BAA0B;IACjD,yBAAyB,EAAE,8BAA8B;IACzD,uBAAuB,EAAE,4BAA4B;IACrD,oBAAoB,EAAE,yBAAyB;IAC/C,mBAAmB,EAAE,uBAAuB;IAC5C,kBAAkB,EAAE,sBAAsB;IAC1C,iBAAiB,EAAE,qBAAqB;IACxC,oBAAoB,EAAE,yBAAyB;
|
|
1
|
+
{"version":3,"file":"Claims.js","sourceRoot":"","sources":["../../../../src/DataModels/Iam/Claims.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IACpB,sBAAsB,EAAE,2BAA2B;IACnD,qBAAqB,EAAE,0BAA0B;IACjD,yBAAyB,EAAE,8BAA8B;IACzD,uBAAuB,EAAE,4BAA4B;IACrD,oBAAoB,EAAE,yBAAyB;IAC/C,mBAAmB,EAAE,uBAAuB;IAC5C,kBAAkB,EAAE,sBAAsB;IAC1C,iBAAiB,EAAE,qBAAqB;IACxC,oBAAoB,EAAE,yBAAyB;IAC/C,gBAAgB,EAAE,oBAAoB;CACvC,CAAC"}
|
|
@@ -24,6 +24,8 @@ class ProcessDefinitionRaw {
|
|
|
24
24
|
exports.ProcessDefinitionRaw = ProcessDefinitionRaw;
|
|
25
25
|
/**
|
|
26
26
|
* A service that parses, validates and filters ProcessDefinitions and ProcessModels.
|
|
27
|
+
*
|
|
28
|
+
* @deprecated This service has been decommissioned and will be removed in a future major release.
|
|
27
29
|
*/
|
|
28
30
|
class BpmnParserService {
|
|
29
31
|
bpmnModelParser = new BpmnModelParser_1.BpmnModelParser();
|
|
@@ -129,18 +131,17 @@ class BpmnParserService {
|
|
|
129
131
|
/**
|
|
130
132
|
* Takes a ProcessModel and an Identity and filters out all elements of the ProcessModel that the Identity is not allowed to access.
|
|
131
133
|
*
|
|
132
|
-
* @async
|
|
133
134
|
* @param identity The identity for which to filter out inaccessible elements.
|
|
134
135
|
* @param processModel The ProcessModel to filter.
|
|
135
136
|
* @returns The filtered ProcessModel, or "undefined", if the user is not allowed to access the ProcessModel at all.
|
|
136
137
|
*/
|
|
137
|
-
|
|
138
|
+
filterInaccessibleProcessModelElements(identity, processModel) {
|
|
138
139
|
const processModelCopy = (0, lodash_clonedeep_1.default)(processModel);
|
|
139
140
|
const processModelHasNoLanes = !(processModel?.laneSet?.lanes?.length > 0);
|
|
140
141
|
if (processModelHasNoLanes) {
|
|
141
142
|
return processModelCopy;
|
|
142
143
|
}
|
|
143
|
-
processModelCopy.laneSet =
|
|
144
|
+
processModelCopy.laneSet = this.filterOutInaccessibleLanes(processModelCopy.laneSet, identity);
|
|
144
145
|
processModelCopy.flowNodes = this.getFlowNodesForLaneSet(processModelCopy.laneSet, processModel.flowNodes);
|
|
145
146
|
const userCannotAccessAnyStartEvents = !this.checkIfProcessModelHasAccessibleStartEvents(processModelCopy);
|
|
146
147
|
const originalProcessModelHasStartEvents = processModel.flowNodes.some((flowNode) => flowNode.bpmnType === index_2.BpmnType.startEvent);
|
|
@@ -158,19 +159,18 @@ class BpmnParserService {
|
|
|
158
159
|
* @param identity The identity for which to filter the given laneSet.
|
|
159
160
|
* @returns The filtered laneSet.
|
|
160
161
|
*/
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
if (userHasAdminPrivileges) {
|
|
162
|
+
filterOutInaccessibleLanes(laneSet, identity) {
|
|
163
|
+
if (this.isUserAnAdminOrObserver(identity)) {
|
|
164
164
|
return laneSet;
|
|
165
165
|
}
|
|
166
166
|
const filteredLaneSet = (0, lodash_clonedeep_1.default)(laneSet);
|
|
167
167
|
filteredLaneSet.lanes = [];
|
|
168
|
-
const checkIfUserHasLaneClaim =
|
|
168
|
+
const checkIfUserHasLaneClaim = (laneName) => {
|
|
169
169
|
try {
|
|
170
170
|
if (!laneName) {
|
|
171
171
|
return true;
|
|
172
172
|
}
|
|
173
|
-
|
|
173
|
+
this.iamService.ensureHasClaim(identity, laneName);
|
|
174
174
|
return true;
|
|
175
175
|
}
|
|
176
176
|
catch (error) {
|
|
@@ -179,14 +179,14 @@ class BpmnParserService {
|
|
|
179
179
|
};
|
|
180
180
|
for (const lane of laneSet.lanes) {
|
|
181
181
|
const filteredLane = (0, lodash_clonedeep_1.default)(lane);
|
|
182
|
-
const userCanNotAccessLane = !
|
|
182
|
+
const userCanNotAccessLane = !checkIfUserHasLaneClaim(lane.name);
|
|
183
183
|
if (userCanNotAccessLane) {
|
|
184
184
|
filteredLane.flowNodeReferences = [];
|
|
185
185
|
delete filteredLane.childLaneSet;
|
|
186
186
|
}
|
|
187
187
|
const laneHasChildLanes = filteredLane.childLaneSet !== undefined;
|
|
188
188
|
if (laneHasChildLanes) {
|
|
189
|
-
filteredLane.childLaneSet =
|
|
189
|
+
filteredLane.childLaneSet = this.filterOutInaccessibleLanes(filteredLane.childLaneSet, identity);
|
|
190
190
|
}
|
|
191
191
|
filteredLaneSet.lanes.push(filteredLane);
|
|
192
192
|
}
|
|
@@ -239,13 +239,16 @@ class BpmnParserService {
|
|
|
239
239
|
});
|
|
240
240
|
return processModelHasAccessibleStartEvent;
|
|
241
241
|
}
|
|
242
|
-
|
|
242
|
+
isUserAnAdminOrObserver(identity) {
|
|
243
243
|
try {
|
|
244
|
-
|
|
245
|
-
if (userIsRoot) {
|
|
244
|
+
if (this.iamService.checkIfUserIsSuperAdmin(identity)) {
|
|
246
245
|
return true;
|
|
247
246
|
}
|
|
248
|
-
|
|
247
|
+
// This function was only added with Engine v19.
|
|
248
|
+
if (typeof this.iamService.checkIfUserIsObserver === 'function') {
|
|
249
|
+
return this.iamService.checkIfUserIsObserver(identity);
|
|
250
|
+
}
|
|
251
|
+
return false;
|
|
249
252
|
}
|
|
250
253
|
catch (error) {
|
|
251
254
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BpmnParserService.js","sourceRoot":"","sources":["../../../../src/ProcessModel/ProcessModelParser/BpmnParserService.ts"],"names":[],"mappings":";;;;;;AAAA,wEAAqC;AAGrC,8CAA6E;AAC7E,yCAAsC;AACtC,0CAAiD;AACjD,uDAAoD;AAEpD,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,6BAA6B,CAAC,CAAC;AAEzD;;GAEG;AACH,MAAa,oBAAoB;IACxB,IAAI,CAAS;IACb,IAAI,CAAS;IACb,GAAG,CAAS;IACZ,SAAS,CAAU;IACnB,SAAS,CAAQ;IACjB,SAAS,CAAQ;CACzB;AAPD,oDAOC;AAED
|
|
1
|
+
{"version":3,"file":"BpmnParserService.js","sourceRoot":"","sources":["../../../../src/ProcessModel/ProcessModelParser/BpmnParserService.ts"],"names":[],"mappings":"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"}
|