@esri/hub-common 14.96.0 → 14.97.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/esm/groups/_internal/GroupBusinessRules.js +21 -0
- package/dist/esm/groups/_internal/GroupBusinessRules.js.map +1 -1
- package/dist/esm/permissions/_internal/checkAssertions.js +15 -3
- package/dist/esm/permissions/_internal/checkAssertions.js.map +1 -1
- package/dist/node/groups/_internal/GroupBusinessRules.js +21 -0
- package/dist/node/groups/_internal/GroupBusinessRules.js.map +1 -1
- package/dist/node/permissions/_internal/checkAssertions.js +15 -3
- package/dist/node/permissions/_internal/checkAssertions.js.map +1 -1
- package/dist/types/permissions/types/IPermissionPolicy.d.ts +5 -0
- package/package.json +1 -1
|
@@ -113,11 +113,32 @@ export const GroupPermissionPolicies = [
|
|
|
113
113
|
authenticated: true,
|
|
114
114
|
privileges: ["portal:user:shareToGroup"],
|
|
115
115
|
assertions: [
|
|
116
|
+
// If the group is not view only, any member can share content
|
|
116
117
|
{
|
|
118
|
+
conditions: [
|
|
119
|
+
{
|
|
120
|
+
property: "entity:isViewOnly",
|
|
121
|
+
type: "eq",
|
|
122
|
+
value: false,
|
|
123
|
+
},
|
|
124
|
+
],
|
|
117
125
|
property: "context:currentUser",
|
|
118
126
|
type: "is-group-member",
|
|
119
127
|
value: "entity:id",
|
|
120
128
|
},
|
|
129
|
+
// if the group is view only, only group admins can share content
|
|
130
|
+
{
|
|
131
|
+
conditions: [
|
|
132
|
+
{
|
|
133
|
+
property: "entity:isViewOnly",
|
|
134
|
+
type: "eq",
|
|
135
|
+
value: true,
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
property: "context:currentUser",
|
|
139
|
+
type: "is-group-admin",
|
|
140
|
+
value: "entity:id",
|
|
141
|
+
},
|
|
121
142
|
],
|
|
122
143
|
},
|
|
123
144
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupBusinessRules.js","sourceRoot":"","sources":["../../../../src/groups/_internal/GroupBusinessRules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GroupBusinessRules.js","sourceRoot":"","sources":["../../../../src/groups/_internal/GroupBusinessRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,9 +11,21 @@ export function checkAssertions(policy, context, entity) {
|
|
|
11
11
|
// Only return a check if the policy is defined
|
|
12
12
|
if (policy.assertions) {
|
|
13
13
|
// iterate over the assertions, creating a check for each entry
|
|
14
|
-
checks = policy.assertions.
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
checks = policy.assertions.reduce((acc, assertion) => {
|
|
15
|
+
var _a;
|
|
16
|
+
let shouldCheckAssertion = true;
|
|
17
|
+
// if conditions, check them first
|
|
18
|
+
if ((_a = assertion.conditions) === null || _a === void 0 ? void 0 : _a.length) {
|
|
19
|
+
shouldCheckAssertion = assertion.conditions.every((condition) => checkAssertion(condition, entity, context).response === "granted");
|
|
20
|
+
}
|
|
21
|
+
// if we pass all conditions/there are no conditions, we evaluate the assertion
|
|
22
|
+
// otherwise, the assertion is ignored
|
|
23
|
+
if (shouldCheckAssertion) {
|
|
24
|
+
const chk = checkAssertion(assertion, entity, context);
|
|
25
|
+
acc = [...acc, chk];
|
|
26
|
+
}
|
|
27
|
+
return acc;
|
|
28
|
+
}, []);
|
|
17
29
|
}
|
|
18
30
|
return checks;
|
|
19
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkAssertions.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkAssertions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAyB,EACzB,OAAuB,EACvB,MAA4B;IAE5B,IAAI,MAAM,GAAG,EAAoB,CAAC;IAClC,+CAA+C;IAC/C,IAAI,MAAM,CAAC,UAAU,EAAE;QACrB,+DAA+D;QAC/D,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAA2B,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"checkAssertions.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkAssertions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAyB,EACzB,OAAuB,EACvB,MAA4B;IAE5B,IAAI,MAAM,GAAG,EAAoB,CAAC;IAClC,+CAA+C;IAC/C,IAAI,MAAM,CAAC,UAAU,EAAE;QACrB,+DAA+D;QAC/D,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAC/B,CAAC,GAAmB,EAAE,SAA2B,EAAE,EAAE;;YACnD,IAAI,oBAAoB,GAAG,IAAI,CAAC;YAEhC,kCAAkC;YAClC,UAAI,SAAS,CAAC,UAAU,0CAAE,MAAM,EAAE;gBAChC,oBAAoB,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAC/C,CAAC,SAA2B,EAAE,EAAE,CAC9B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAK,SAAS,CACpE,CAAC;aACH;YAED,+EAA+E;YAC/E,sCAAsC;YACtC,IAAI,oBAAoB,EAAE;gBACxB,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACvD,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;aACrB;YAED,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH,CAAC;KACH;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -116,11 +116,32 @@ exports.GroupPermissionPolicies = [
|
|
|
116
116
|
authenticated: true,
|
|
117
117
|
privileges: ["portal:user:shareToGroup"],
|
|
118
118
|
assertions: [
|
|
119
|
+
// If the group is not view only, any member can share content
|
|
119
120
|
{
|
|
121
|
+
conditions: [
|
|
122
|
+
{
|
|
123
|
+
property: "entity:isViewOnly",
|
|
124
|
+
type: "eq",
|
|
125
|
+
value: false,
|
|
126
|
+
},
|
|
127
|
+
],
|
|
120
128
|
property: "context:currentUser",
|
|
121
129
|
type: "is-group-member",
|
|
122
130
|
value: "entity:id",
|
|
123
131
|
},
|
|
132
|
+
// if the group is view only, only group admins can share content
|
|
133
|
+
{
|
|
134
|
+
conditions: [
|
|
135
|
+
{
|
|
136
|
+
property: "entity:isViewOnly",
|
|
137
|
+
type: "eq",
|
|
138
|
+
value: true,
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
property: "context:currentUser",
|
|
142
|
+
type: "is-group-admin",
|
|
143
|
+
value: "entity:id",
|
|
144
|
+
},
|
|
124
145
|
],
|
|
125
146
|
},
|
|
126
147
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupBusinessRules.js","sourceRoot":"","sources":["../../../../src/groups/_internal/GroupBusinessRules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GroupBusinessRules.js","sourceRoot":"","sources":["../../../../src/groups/_internal/GroupBusinessRules.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACU,QAAA,gBAAgB,GAAG;IAC9B,WAAW;IACX,kBAAkB;IAClB,uBAAuB;IACvB,uBAAuB;IACvB,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,qBAAqB;IACrB,8BAA8B;IAC9B,+BAA+B;IAC/B,6BAA6B;IAC7B,gCAAgC;IAChC,8BAA8B;IAC9B,mCAAmC;IACnC,6BAA6B;IAC7B,6BAA6B;IAC7B,wBAAwB;IACxB,kBAAkB;CACV,CAAC;AAEX;;;GAGG;AACU,QAAA,uBAAuB,GAAwB;IAC1D;QACE,UAAU,EAAE,WAAW;QACvB,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD;QACE,UAAU,EAAE,kBAAkB;QAC9B,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,CAAC,yBAAyB,CAAC;QACvC,UAAU,EAAE;YACV;gBACE,QAAQ,EAAE,4BAA4B;gBACtC,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,wCAAwC;aAChD;SACF;KACF;IACD;QACE,UAAU,EAAE,uBAAuB;QACnC,YAAY,EAAE,CAAC,kBAAkB,CAAC;KACnC;IACD;QACE,UAAU,EAAE,uBAAuB;QACnC,YAAY,EAAE,CAAC,kBAAkB,CAAC;QAClC,UAAU,EAAE,CAAC,uCAAuC,CAAC;KACtD;IACD;QACE,UAAU,EAAE,gBAAgB;QAC5B,YAAY,EAAE,CAAC,WAAW,CAAC;KAC5B;IACD;QACE,UAAU,EAAE,gBAAgB;QAC5B,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,IAAI;KACjB;IACD;QACE,UAAU,EAAE,kBAAkB;QAC9B,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,UAAU,EAAE,iBAAiB;QAC7B,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,UAAU,EAAE,qBAAqB;QACjC,YAAY,EAAE,CAAC,uBAAuB,CAAC;KACxC;IACD;QACE,UAAU,EAAE,8BAA8B;QAC1C,YAAY,EAAE,CAAC,OAAO,CAAC;QACvB,YAAY,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;KACxD;IACD;QACE,UAAU,EAAE,6BAA6B;QACzC,YAAY,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;KACxD;IACD;QACE,UAAU,EAAE,gCAAgC;QAC5C,YAAY,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;KACxD;IACD;QACE,UAAU,EAAE,8BAA8B;QAC1C,YAAY,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;KACxD;IACD;QACE,UAAU,EAAE,6BAA6B;QACzC,YAAY,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;KACxD;IACD;QACE,UAAU,EAAE,6BAA6B;QACzC,YAAY,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;KACxD;IACD,2EAA2E;IAC3E;QACE,UAAU,EAAE,wBAAwB;QACpC,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,CAAC,0BAA0B,CAAC;QACxC,UAAU,EAAE;YACV,8DAA8D;YAC9D;gBACE,UAAU,EAAE;oBACV;wBACE,QAAQ,EAAE,mBAAmB;wBAC7B,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,KAAK;qBACb;iBACF;gBACD,QAAQ,EAAE,qBAAqB;gBAC/B,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,WAAW;aACnB;YAED,iEAAiE;YACjE;gBACE,UAAU,EAAE;oBACV;wBACE,QAAQ,EAAE,mBAAmB;wBAC7B,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,IAAI;qBACZ;iBACF;gBACD,QAAQ,EAAE,qBAAqB;gBAC/B,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,WAAW;aACnB;SACF;KACF;IACD;QACE,UAAU,EAAE,kBAAkB;QAC9B,YAAY,EAAE,CAAC,gBAAgB,CAAC;KACjC;CACF,CAAC"}
|
|
@@ -14,9 +14,21 @@ function checkAssertions(policy, context, entity) {
|
|
|
14
14
|
// Only return a check if the policy is defined
|
|
15
15
|
if (policy.assertions) {
|
|
16
16
|
// iterate over the assertions, creating a check for each entry
|
|
17
|
-
checks = policy.assertions.
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
checks = policy.assertions.reduce((acc, assertion) => {
|
|
18
|
+
var _a;
|
|
19
|
+
let shouldCheckAssertion = true;
|
|
20
|
+
// if conditions, check them first
|
|
21
|
+
if ((_a = assertion.conditions) === null || _a === void 0 ? void 0 : _a.length) {
|
|
22
|
+
shouldCheckAssertion = assertion.conditions.every((condition) => checkAssertion_1.checkAssertion(condition, entity, context).response === "granted");
|
|
23
|
+
}
|
|
24
|
+
// if we pass all conditions/there are no conditions, we evaluate the assertion
|
|
25
|
+
// otherwise, the assertion is ignored
|
|
26
|
+
if (shouldCheckAssertion) {
|
|
27
|
+
const chk = checkAssertion_1.checkAssertion(assertion, entity, context);
|
|
28
|
+
acc = [...acc, chk];
|
|
29
|
+
}
|
|
30
|
+
return acc;
|
|
31
|
+
}, []);
|
|
20
32
|
}
|
|
21
33
|
return checks;
|
|
22
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkAssertions.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkAssertions.ts"],"names":[],"mappings":";;;AAEA,qDAAkD;AAElD;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,MAAyB,EACzB,OAAuB,EACvB,MAA4B;IAE5B,IAAI,MAAM,GAAG,EAAoB,CAAC;IAClC,+CAA+C;IAC/C,IAAI,MAAM,CAAC,UAAU,EAAE;QACrB,+DAA+D;QAC/D,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAA2B,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"checkAssertions.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkAssertions.ts"],"names":[],"mappings":";;;AAEA,qDAAkD;AAElD;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,MAAyB,EACzB,OAAuB,EACvB,MAA4B;IAE5B,IAAI,MAAM,GAAG,EAAoB,CAAC;IAClC,+CAA+C;IAC/C,IAAI,MAAM,CAAC,UAAU,EAAE;QACrB,+DAA+D;QAC/D,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAC/B,CAAC,GAAmB,EAAE,SAA2B,EAAE,EAAE;;YACnD,IAAI,oBAAoB,GAAG,IAAI,CAAC;YAEhC,kCAAkC;YAClC,UAAI,SAAS,CAAC,UAAU,0CAAE,MAAM,EAAE;gBAChC,oBAAoB,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAC/C,CAAC,SAA2B,EAAE,EAAE,CAC9B,+BAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAK,SAAS,CACpE,CAAC;aACH;YAED,+EAA+E;YAC/E,sCAAsC;YACtC,IAAI,oBAAoB,EAAE;gBACxB,MAAM,GAAG,GAAG,+BAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACvD,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;aACrB;YAED,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH,CAAC;KACH;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAnCD,0CAmCC"}
|
|
@@ -98,6 +98,11 @@ export interface IPolicyAssertion {
|
|
|
98
98
|
property: string;
|
|
99
99
|
type: AssertionType;
|
|
100
100
|
value: any;
|
|
101
|
+
/** A condition dictates if an assertion should be evaluated. If any condition evaluates to false,
|
|
102
|
+
* the assertion should be ignored. If the conditions evaluate to true, or if there are no conditions,
|
|
103
|
+
* the assertion should be evaluated.
|
|
104
|
+
*/
|
|
105
|
+
conditions?: IPolicyAssertion[];
|
|
101
106
|
}
|
|
102
107
|
/**
|
|
103
108
|
* Assertion types which define the comparison operation to be performed
|