@esri/hub-common 12.0.0-alpha.1 → 12.0.0-alpha.2

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 (94) hide show
  1. package/dist/esm/ArcGISContext.js +14 -0
  2. package/dist/esm/ArcGISContext.js.map +1 -1
  3. package/dist/esm/permissions/HubPermissionPolicies.js +53 -0
  4. package/dist/esm/permissions/HubPermissionPolicies.js.map +1 -1
  5. package/dist/esm/permissions/_internal/checkAlphaGating.js +27 -0
  6. package/dist/esm/permissions/_internal/checkAlphaGating.js.map +1 -0
  7. package/dist/esm/permissions/_internal/checkAssertion.js +190 -0
  8. package/dist/esm/permissions/_internal/checkAssertion.js.map +1 -0
  9. package/dist/esm/permissions/_internal/checkAssertions.js +20 -0
  10. package/dist/esm/permissions/_internal/checkAssertions.js.map +1 -0
  11. package/dist/esm/permissions/_internal/checkAuthentication.js +15 -11
  12. package/dist/esm/permissions/_internal/checkAuthentication.js.map +1 -1
  13. package/dist/esm/permissions/_internal/checkEdit.js +6 -3
  14. package/dist/esm/permissions/_internal/checkEdit.js.map +1 -1
  15. package/dist/esm/permissions/_internal/checkEntityPolicy.js +14 -2
  16. package/dist/esm/permissions/_internal/checkEntityPolicy.js.map +1 -1
  17. package/dist/esm/permissions/_internal/checkLicense.js +21 -15
  18. package/dist/esm/permissions/_internal/checkLicense.js.map +1 -1
  19. package/dist/esm/permissions/_internal/checkOwner.js.map +1 -1
  20. package/dist/esm/permissions/_internal/checkPrivileges.js +19 -15
  21. package/dist/esm/permissions/_internal/checkPrivileges.js.map +1 -1
  22. package/dist/esm/permissions/_internal/getPolicyResponseCode.js +34 -16
  23. package/dist/esm/permissions/_internal/getPolicyResponseCode.js.map +1 -1
  24. package/dist/esm/permissions/checkPermission.js +3 -2
  25. package/dist/esm/permissions/checkPermission.js.map +1 -1
  26. package/dist/esm/permissions/types/Permission.js +5 -12
  27. package/dist/esm/permissions/types/Permission.js.map +1 -1
  28. package/dist/esm/projects/_internal/ProjectPermissionPolicies.js +6 -0
  29. package/dist/esm/projects/_internal/ProjectPermissionPolicies.js.map +1 -1
  30. package/dist/esm/projects/defaults.js +1 -0
  31. package/dist/esm/projects/defaults.js.map +1 -1
  32. package/dist/esm/sites/HubSites.js +10 -12
  33. package/dist/esm/sites/HubSites.js.map +1 -1
  34. package/dist/esm/sites/_internal/SitesPermissionPolicies.js +10 -0
  35. package/dist/esm/sites/_internal/SitesPermissionPolicies.js.map +1 -1
  36. package/dist/esm/sites/_internal/applyPermissionMigration.js +52 -0
  37. package/dist/esm/sites/_internal/applyPermissionMigration.js.map +1 -0
  38. package/dist/node/ArcGISContext.js +14 -0
  39. package/dist/node/ArcGISContext.js.map +1 -1
  40. package/dist/node/permissions/HubPermissionPolicies.js +53 -0
  41. package/dist/node/permissions/HubPermissionPolicies.js.map +1 -1
  42. package/dist/node/permissions/_internal/checkAlphaGating.js +31 -0
  43. package/dist/node/permissions/_internal/checkAlphaGating.js.map +1 -0
  44. package/dist/node/permissions/_internal/checkAssertion.js +194 -0
  45. package/dist/node/permissions/_internal/checkAssertion.js.map +1 -0
  46. package/dist/node/permissions/_internal/checkAssertions.js +24 -0
  47. package/dist/node/permissions/_internal/checkAssertions.js.map +1 -0
  48. package/dist/node/permissions/_internal/checkAuthentication.js +15 -11
  49. package/dist/node/permissions/_internal/checkAuthentication.js.map +1 -1
  50. package/dist/node/permissions/_internal/checkEdit.js +6 -3
  51. package/dist/node/permissions/_internal/checkEdit.js.map +1 -1
  52. package/dist/node/permissions/_internal/checkEntityPolicy.js +14 -2
  53. package/dist/node/permissions/_internal/checkEntityPolicy.js.map +1 -1
  54. package/dist/node/permissions/_internal/checkLicense.js +21 -15
  55. package/dist/node/permissions/_internal/checkLicense.js.map +1 -1
  56. package/dist/node/permissions/_internal/checkOwner.js.map +1 -1
  57. package/dist/node/permissions/_internal/checkPrivileges.js +19 -15
  58. package/dist/node/permissions/_internal/checkPrivileges.js.map +1 -1
  59. package/dist/node/permissions/_internal/getPolicyResponseCode.js +34 -16
  60. package/dist/node/permissions/_internal/getPolicyResponseCode.js.map +1 -1
  61. package/dist/node/permissions/checkPermission.js +3 -2
  62. package/dist/node/permissions/checkPermission.js.map +1 -1
  63. package/dist/node/permissions/types/Permission.js +5 -12
  64. package/dist/node/permissions/types/Permission.js.map +1 -1
  65. package/dist/node/projects/_internal/ProjectPermissionPolicies.js +7 -1
  66. package/dist/node/projects/_internal/ProjectPermissionPolicies.js.map +1 -1
  67. package/dist/node/projects/defaults.js +1 -0
  68. package/dist/node/projects/defaults.js.map +1 -1
  69. package/dist/node/sites/HubSites.js +10 -12
  70. package/dist/node/sites/HubSites.js.map +1 -1
  71. package/dist/node/sites/_internal/SitesPermissionPolicies.js +11 -1
  72. package/dist/node/sites/_internal/SitesPermissionPolicies.js.map +1 -1
  73. package/dist/node/sites/_internal/applyPermissionMigration.js +56 -0
  74. package/dist/node/sites/_internal/applyPermissionMigration.js.map +1 -0
  75. package/dist/types/ArcGISContext.d.ts +10 -0
  76. package/dist/types/permissions/_internal/checkAlphaGating.d.ts +10 -0
  77. package/dist/types/permissions/_internal/checkAssertion.d.ts +11 -0
  78. package/dist/types/permissions/_internal/checkAssertions.d.ts +10 -0
  79. package/dist/types/permissions/_internal/checkAuthentication.d.ts +1 -2
  80. package/dist/types/permissions/_internal/checkEdit.d.ts +1 -2
  81. package/dist/types/permissions/_internal/checkLicense.d.ts +1 -1
  82. package/dist/types/permissions/_internal/checkOwner.d.ts +1 -2
  83. package/dist/types/permissions/_internal/checkPrivileges.d.ts +1 -2
  84. package/dist/types/permissions/checkPermission.d.ts +1 -2
  85. package/dist/types/permissions/types/IAccessResponse.d.ts +5 -0
  86. package/dist/types/permissions/types/IEntityPermissionPolicy.d.ts +1 -1
  87. package/dist/types/permissions/types/IPermissionPolicy.d.ts +18 -9
  88. package/dist/types/permissions/types/Permission.d.ts +2 -2
  89. package/dist/types/permissions/types/PolicyResponse.d.ts +1 -1
  90. package/dist/types/projects/_internal/ProjectPermissionPolicies.d.ts +1 -0
  91. package/dist/types/sites/HubSites.d.ts +1 -1
  92. package/dist/types/sites/_internal/SitesPermissionPolicies.d.ts +5 -0
  93. package/dist/types/sites/_internal/applyPermissionMigration.d.ts +7 -0
  94. package/package.json +1 -1
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkAssertion = void 0;
4
+ const objects_1 = require("../../objects");
5
+ const utils_1 = require("../../utils");
6
+ const getPolicyResponseCode_1 = require("./getPolicyResponseCode");
7
+ /**
8
+ * Check a specific EntityAssertion
9
+ * Exported purely for testing. Not exported from the package.
10
+ * @param assertion
11
+ * @param entity
12
+ * @param context
13
+ * @returns
14
+ */
15
+ function checkAssertion(assertion, entity, context) {
16
+ let response = "granted";
17
+ // construct a hash to look up properties in
18
+ const lookupHash = { entity, context };
19
+ // get the property value
20
+ const propertyLookup = parseProperty(assertion.property);
21
+ const propValue = objects_1.getProp(lookupHash, propertyLookup.path);
22
+ // If prop is undefined, then the assertion fails
23
+ if (propValue === undefined) {
24
+ response = "assertion-property-not-found";
25
+ }
26
+ let val = assertion.value;
27
+ if (typeof val === "string" && val.indexOf(":") > -1) {
28
+ const valueLookup = parseProperty(assertion.value);
29
+ val = objects_1.getProp(lookupHash, valueLookup.path);
30
+ if (val === undefined) {
31
+ response = "assertion-property-not-found";
32
+ }
33
+ }
34
+ // if we have the two values, we can make the assertion
35
+ if (propValue !== undefined && val !== undefined) {
36
+ // TODO: Should these fns return IPolicyCheck? or just the response?
37
+ // TODO: Should these fns inspect the type internally? or switch case here?
38
+ switch (assertion.type) {
39
+ case "eq":
40
+ case "neq":
41
+ response = equalityAssertions(assertion, propValue, val);
42
+ break;
43
+ case "contains":
44
+ case "without":
45
+ response = arrayAssertions(assertion, propValue, val);
46
+ break;
47
+ case "included-in":
48
+ response = includeAssertions(assertion, propValue, val);
49
+ break;
50
+ case "gt":
51
+ case "lt":
52
+ response = rangeAssertions(assertion, propValue, val);
53
+ break;
54
+ case "is-group-admin":
55
+ case "is-group-member":
56
+ case "is-group-owner":
57
+ response = groupAssertions(assertion, propValue, val, context);
58
+ break;
59
+ }
60
+ }
61
+ const result = {
62
+ name: `assertion: ${assertion.property} ${assertion.type} ${assertion.value}`,
63
+ value: propValue,
64
+ code: getPolicyResponseCode_1.getPolicyResponseCode(response),
65
+ response,
66
+ };
67
+ return result;
68
+ }
69
+ exports.checkAssertion = checkAssertion;
70
+ function groupAssertions(assertion, propValue, val, context) {
71
+ let response = "granted";
72
+ const userGroups = context.currentUser.groups || [];
73
+ // Default the groups to all groups the user is a member of
74
+ let groups = utils_1.mapBy("id", userGroups);
75
+ let failResponse = "user-not-group-member";
76
+ if (assertion.type === "is-group-member") {
77
+ failResponse = "user-not-group-member";
78
+ // no need to filter - this is anyone who's a member
79
+ groups = filterByMembershipType(userGroups, ["admin", "owner", "member"]);
80
+ }
81
+ if (assertion.type === "is-group-admin") {
82
+ failResponse = "user-not-group-manager";
83
+ groups = filterByMembershipType(userGroups, ["admin", "owner"]);
84
+ }
85
+ if (assertion.type === "is-group-owner") {
86
+ failResponse = "user-not-group-owner";
87
+ groups = filterByMembershipType(userGroups, ["owner"]);
88
+ }
89
+ // now, see if the val is in the groups array
90
+ if (!groups.includes(val)) {
91
+ // send a specific response
92
+ response = failResponse;
93
+ }
94
+ return response;
95
+ }
96
+ function filterByMembershipType(groups, types) {
97
+ return groups.reduce((acc, grp) => {
98
+ if (types.includes(grp.userMembership.memberType)) {
99
+ acc.push(grp.id);
100
+ }
101
+ return acc;
102
+ }, []);
103
+ }
104
+ /**
105
+ * Is the propValue included in the val array?
106
+ * @param assertion
107
+ * @param propValue
108
+ * @param val
109
+ * @returns
110
+ */
111
+ function includeAssertions(assertion, propValue, val) {
112
+ let response = "granted";
113
+ if (!Array.isArray(val)) {
114
+ response = "property-not-array";
115
+ }
116
+ else {
117
+ const arrayVal = val;
118
+ if (!arrayVal.includes(propValue)) {
119
+ response = "array-missing-required-value";
120
+ }
121
+ }
122
+ return response;
123
+ }
124
+ /**
125
+ * Is the propValue "eq" or "neq" to the val?
126
+ * @param assertion
127
+ * @param propValue
128
+ * @param val
129
+ * @returns
130
+ */
131
+ function equalityAssertions(assertion, propValue, val) {
132
+ let response = "granted";
133
+ if (assertion.type === "eq" && propValue !== val) {
134
+ response = "assertion-failed";
135
+ }
136
+ else if (assertion.type === "neq" && propValue === val) {
137
+ response = "assertion-failed";
138
+ }
139
+ return response;
140
+ }
141
+ /**
142
+ * Is the propValue "gt" or "lt" to the val?
143
+ * @param assertion
144
+ * @param propValue
145
+ * @param val
146
+ * @returns
147
+ */
148
+ function rangeAssertions(assertion, propValue, val) {
149
+ let response = "granted";
150
+ if (typeof propValue !== "number" || typeof val !== "number") {
151
+ response = "assertion-requires-numeric-values";
152
+ }
153
+ if (assertion.type === "gt" && propValue < val) {
154
+ response = "assertion-failed";
155
+ }
156
+ else if (assertion.type === "lt" && propValue > val) {
157
+ response = "assertion-failed";
158
+ }
159
+ return response;
160
+ }
161
+ /**
162
+ * Does the propValue array "contain" or "without" the val?
163
+ * @param assertion
164
+ * @param propValue
165
+ * @param val
166
+ * @returns
167
+ */
168
+ function arrayAssertions(assertion, propValue, val) {
169
+ let response = "granted";
170
+ if (!Array.isArray(propValue)) {
171
+ response = "property-not-array";
172
+ }
173
+ else {
174
+ const arrayProp = propValue;
175
+ const arrayContainsValue = arrayProp.includes(val);
176
+ if (assertion.type === "contains" && !arrayContainsValue) {
177
+ response = "array-missing-required-value";
178
+ }
179
+ if (assertion.type === "without" && arrayContainsValue) {
180
+ response = "array-contains-invalid-value";
181
+ }
182
+ }
183
+ return response;
184
+ }
185
+ function parseProperty(property) {
186
+ let root = "entity";
187
+ let path = `entity.${property}`;
188
+ if (property.indexOf(":") > -1) {
189
+ root = property.split(":")[0];
190
+ path = `${root}.${property.split(":")[1]}`;
191
+ }
192
+ return { root, path };
193
+ }
194
+ //# sourceMappingURL=checkAssertion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkAssertion.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkAssertion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkAssertions = void 0;
4
+ const checkAssertion_1 = require("./checkAssertion");
5
+ /**
6
+ * Validate entityOwner policy
7
+ * @param policy
8
+ * @param context
9
+ * @param entity
10
+ * @returns
11
+ */
12
+ function checkAssertions(policy, context, entity) {
13
+ let checks = [];
14
+ // Only return a check if the policy is defined
15
+ if (policy.assertions) {
16
+ // iterate over the assertions, creating a check for each entry
17
+ checks = policy.assertions.map((assertion) => {
18
+ return checkAssertion_1.checkAssertion(assertion, entity, context);
19
+ });
20
+ }
21
+ return checks;
22
+ }
23
+ exports.checkAssertions = checkAssertions;
24
+ //# sourceMappingURL=checkAssertions.js.map
@@ -0,0 +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;YAC7D,OAAO,+BAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAfD,0CAeC"}
@@ -10,19 +10,23 @@ const getPolicyResponseCode_1 = require("./getPolicyResponseCode");
10
10
  * @returns
11
11
  */
12
12
  function checkAuthentication(policy, context, entity) {
13
- let response = "granted";
13
+ const checks = [];
14
14
  // Only return a check if the policy is defined
15
- if (policy.authenticated && !context.isAuthenticated) {
16
- response = "not-authenticated";
15
+ if (policy.hasOwnProperty("authenticated")) {
16
+ let response = "granted";
17
+ if (policy.authenticated && !context.isAuthenticated) {
18
+ response = "not-authenticated";
19
+ }
20
+ // create the check
21
+ const check = {
22
+ name: "authentication",
23
+ value: `required: ${policy.authenticated}`,
24
+ code: getPolicyResponseCode_1.getPolicyResponseCode(response),
25
+ response,
26
+ };
27
+ checks.push(check);
17
28
  }
18
- // create the check
19
- const check = {
20
- name: "authentication",
21
- value: `required: ${policy.authenticated}`,
22
- code: getPolicyResponseCode_1.getPolicyResponseCode(response),
23
- response,
24
- };
25
- return [check];
29
+ return checks;
26
30
  }
27
31
  exports.checkAuthentication = checkAuthentication;
28
32
  //# sourceMappingURL=checkAuthentication.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkAuthentication.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkAuthentication.ts"],"names":[],"mappings":";;;AAGA,mEAAgE;AAEhE;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,MAAyB,EACzB,OAAuB,EACvB,MAAkB;IAElB,IAAI,QAAQ,GAAmB,SAAS,CAAC;IAEzC,+CAA+C;IAC/C,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;QACpD,QAAQ,GAAG,mBAAmB,CAAC;KAChC;IAED,mBAAmB;IACnB,MAAM,KAAK,GAAiB;QAC1B,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,aAAa,MAAM,CAAC,aAAa,EAAE;QAC1C,IAAI,EAAE,6CAAqB,CAAC,QAAQ,CAAC;QACrC,QAAQ;KACT,CAAC;IAEF,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AArBD,kDAqBC"}
1
+ {"version":3,"file":"checkAuthentication.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkAuthentication.ts"],"names":[],"mappings":";;;AAEA,mEAAgE;AAEhE;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,MAAyB,EACzB,OAAuB,EACvB,MAA4B;IAE5B,MAAM,MAAM,GAAG,EAAoB,CAAC;IAEpC,+CAA+C;IAC/C,IAAI,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;QAC1C,IAAI,QAAQ,GAAmB,SAAS,CAAC;QAEzC,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YACpD,QAAQ,GAAG,mBAAmB,CAAC;SAChC;QAED,mBAAmB;QACnB,MAAM,KAAK,GAAiB;YAC1B,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,aAAa,MAAM,CAAC,aAAa,EAAE;YAC1C,IAAI,EAAE,6CAAqB,CAAC,QAAQ,CAAC;YACrC,QAAQ;SACT,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAzBD,kDAyBC"}
@@ -12,17 +12,20 @@ const getPolicyResponseCode_1 = require("./getPolicyResponseCode");
12
12
  */
13
13
  function checkEdit(policy, context, entity) {
14
14
  const checks = [];
15
- let response = "granted";
16
15
  // Only return a check if the policy is defined
17
- if (policy.entityEdit) {
16
+ if (policy.hasOwnProperty("entityEdit")) {
17
+ let response = "granted";
18
18
  if (!entity) {
19
19
  // fail b/c no entity
20
20
  response = "entity-required";
21
21
  }
22
22
  else {
23
- if (!entity.canEdit) {
23
+ if (policy.entityEdit && !entity.canEdit) {
24
24
  response = "no-edit-access";
25
25
  }
26
+ else if (!policy.entityEdit && entity.canEdit) {
27
+ response = "edit-access";
28
+ }
26
29
  }
27
30
  // create the check
28
31
  const check = {
@@ -1 +1 @@
1
- {"version":3,"file":"checkEdit.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkEdit.ts"],"names":[],"mappings":";;;AAEA,2CAA+C;AAE/C,mEAAgE;AAEhE;;;;;;GAMG;AACH,SAAgB,SAAS,CACvB,MAAyB,EACzB,OAAuB,EACvB,MAAkB;IAElB,MAAM,MAAM,GAAG,EAAoB,CAAC;IACpC,IAAI,QAAQ,GAAmB,SAAS,CAAC;IAEzC,+CAA+C;IAC/C,IAAI,MAAM,CAAC,UAAU,EAAE;QACrB,IAAI,CAAC,MAAM,EAAE;YACX,qBAAqB;YACrB,QAAQ,GAAG,iBAAiB,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACnB,QAAQ,GAAG,gBAAgB,CAAC;aAC7B;SACF;QAED,mBAAmB;QACnB,MAAM,KAAK,GAAiB;YAC1B,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,mBAAmB,wBAAc,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE;YACpE,IAAI,EAAE,6CAAqB,CAAC,QAAQ,CAAC;YACrC,QAAQ;SACT,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA9BD,8BA8BC"}
1
+ {"version":3,"file":"checkEdit.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkEdit.ts"],"names":[],"mappings":";;;AACA,2CAA+C;AAE/C,mEAAgE;AAEhE;;;;;;GAMG;AACH,SAAgB,SAAS,CACvB,MAAyB,EACzB,OAAuB,EACvB,MAA4B;IAE5B,MAAM,MAAM,GAAG,EAAoB,CAAC;IAEpC,+CAA+C;IAC/C,IAAI,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;QACvC,IAAI,QAAQ,GAAmB,SAAS,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE;YACX,qBAAqB;YACrB,QAAQ,GAAG,iBAAiB,CAAC;SAC9B;aAAM;YACL,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACxC,QAAQ,GAAG,gBAAgB,CAAC;aAC7B;iBAAM,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,EAAE;gBAC/C,QAAQ,GAAG,aAAa,CAAC;aAC1B;SACF;QAED,mBAAmB;QACnB,MAAM,KAAK,GAAiB;YAC1B,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,mBAAmB,wBAAc,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE;YACpE,IAAI,EAAE,6CAAqB,CAAC,QAAQ,CAAC;YACrC,QAAQ;SACT,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAhCD,8BAgCC"}
@@ -10,7 +10,7 @@ const getPolicyResponseCode_1 = require("./getPolicyResponseCode");
10
10
  * @returns
11
11
  */
12
12
  function checkEntityPolicy(policy, context) {
13
- const user = context.currentUser;
13
+ const user = context.currentUser || { groups: [] };
14
14
  const userGroups = user.groups || [];
15
15
  let response = "not-granted";
16
16
  const type = policy.collaborationType;
@@ -41,13 +41,25 @@ function checkEntityPolicy(policy, context) {
41
41
  }
42
42
  if (type === "group-admin") {
43
43
  const group = userGroups.find((g) => g.id === id);
44
- if (objects_1.getProp(group, "userMembership.memberType") === "admin") {
44
+ const memberType = objects_1.getProp(group, "userMembership.memberType");
45
+ if (["admin", "owner"].includes(memberType)) {
45
46
  response = "granted";
46
47
  }
47
48
  else {
48
49
  response = "not-group-admin";
49
50
  }
50
51
  }
52
+ if (type === "authenticated") {
53
+ if (context.isAuthenticated) {
54
+ response = "granted";
55
+ }
56
+ else {
57
+ response = "not-authenticated";
58
+ }
59
+ }
60
+ if (type === "anonymous") {
61
+ response = "granted";
62
+ }
51
63
  const check = {
52
64
  name: "entity:policy",
53
65
  value: `${policy.collaborationType}:${policy.collaborationId}`,
@@ -1 +1 @@
1
- {"version":3,"file":"checkEntityPolicy.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkEntityPolicy.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AAMxC,mEAAgE;AAGhE;;;;;GAKG;AAEH,SAAgB,iBAAiB,CAC/B,MAA+B,EAC/B,OAAuB;IAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAK,EAAe,CAAC;IACnD,IAAI,QAAQ,GAAmB,aAAa,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC;IAElC,IAAI,IAAI,KAAK,MAAM,EAAE;QACnB,IAAI,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;YACxB,QAAQ,GAAG,SAAS,CAAC;SACtB;aAAM;YACL,QAAQ,GAAG,aAAa,CAAC;SAC1B;KACF;IAED,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,IAAI,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;YACrB,QAAQ,GAAG,SAAS,CAAC;SACtB;aAAM;YACL,QAAQ,GAAG,gBAAgB,CAAC;SAC7B;KACF;IAED,IAAI,IAAI,KAAK,OAAO,EAAE;QACpB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;YAC/C,QAAQ,GAAG,SAAS,CAAC;SACtB;aAAM;YACL,QAAQ,GAAG,kBAAkB,CAAC;SAC/B;KACF;IAED,IAAI,IAAI,KAAK,aAAa,EAAE;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,IAAI,iBAAO,CAAC,KAAK,EAAE,2BAA2B,CAAC,KAAK,OAAO,EAAE;YAC3D,QAAQ,GAAG,SAAS,CAAC;SACtB;aAAM;YACL,QAAQ,GAAG,iBAAiB,CAAC;SAC9B;KACF;IAED,MAAM,KAAK,GAAiB;QAC1B,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,GAAG,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,eAAe,EAAE;QAC9D,QAAQ;QACR,IAAI,EAAE,6CAAqB,CAAC,QAAQ,CAAC;KACtC,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAlDD,8CAkDC"}
1
+ {"version":3,"file":"checkEntityPolicy.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkEntityPolicy.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AAMxC,mEAAgE;AAGhE;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,MAA+B,EAC/B,OAAuB;IAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,IAAK,EAAE,MAAM,EAAE,EAAE,EAAY,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAK,EAAe,CAAC;IACnD,IAAI,QAAQ,GAAmB,aAAa,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC;IAElC,IAAI,IAAI,KAAK,MAAM,EAAE;QACnB,IAAI,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;YACxB,QAAQ,GAAG,SAAS,CAAC;SACtB;aAAM;YACL,QAAQ,GAAG,aAAa,CAAC;SAC1B;KACF;IAED,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,IAAI,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;YACrB,QAAQ,GAAG,SAAS,CAAC;SACtB;aAAM;YACL,QAAQ,GAAG,gBAAgB,CAAC;SAC7B;KACF;IAED,IAAI,IAAI,KAAK,OAAO,EAAE;QACpB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;YAC/C,QAAQ,GAAG,SAAS,CAAC;SACtB;aAAM;YACL,QAAQ,GAAG,kBAAkB,CAAC;SAC/B;KACF;IAED,IAAI,IAAI,KAAK,aAAa,EAAE;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,iBAAO,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC3C,QAAQ,GAAG,SAAS,CAAC;SACtB;aAAM;YACL,QAAQ,GAAG,iBAAiB,CAAC;SAC9B;KACF;IAED,IAAI,IAAI,KAAK,eAAe,EAAE;QAC5B,IAAI,OAAO,CAAC,eAAe,EAAE;YAC3B,QAAQ,GAAG,SAAS,CAAC;SACtB;aAAM;YACL,QAAQ,GAAG,mBAAmB,CAAC;SAChC;KACF;IAED,IAAI,IAAI,KAAK,WAAW,EAAE;QACxB,QAAQ,GAAG,SAAS,CAAC;KACtB;IAED,MAAM,KAAK,GAAiB;QAC1B,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,GAAG,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,eAAe,EAAE;QAC9D,QAAQ;QACR,IAAI,EAAE,6CAAqB,CAAC,QAAQ,CAAC;KACtC,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AA/DD,8CA+DC"}
@@ -9,23 +9,29 @@ const getPolicyResponseCode_1 = require("./getPolicyResponseCode");
9
9
  * @param context
10
10
  * @returns
11
11
  */
12
- function checkLicense(policy, context) {
13
- let result = "granted";
14
- if (!policy.licenses.includes(context.hubLicense)) {
15
- result = "not-available";
16
- // can we show an upgrade ux?
17
- if (policy.licenses[0] === "hub-premium" &&
18
- context.hubLicense === "hub-basic") {
19
- result = "not-licensed"; // implies it could be licensed
12
+ function checkLicense(policy, context, entity) {
13
+ var _a;
14
+ const checks = [];
15
+ // Only return a check if the policy is defined
16
+ if ((_a = policy.licenses) === null || _a === void 0 ? void 0 : _a.length) {
17
+ let result = "granted";
18
+ if (!policy.licenses.includes(context.hubLicense)) {
19
+ result = "not-available";
20
+ // can we show an upgrade ux?
21
+ if (policy.licenses[0] === "hub-premium" &&
22
+ context.hubLicense === "hub-basic") {
23
+ result = "not-licensed"; // implies it could be licensed
24
+ }
20
25
  }
26
+ const check = {
27
+ name: `license in ${policy.licenses.join(", ")}`,
28
+ value: context.hubLicense,
29
+ code: getPolicyResponseCode_1.getPolicyResponseCode(result),
30
+ response: result,
31
+ };
32
+ checks.push(check);
21
33
  }
22
- const check = {
23
- name: `license in ${policy.licenses.join(", ")}`,
24
- value: context.hubLicense,
25
- code: getPolicyResponseCode_1.getPolicyResponseCode(result),
26
- response: result,
27
- };
28
- return [check];
34
+ return checks;
29
35
  }
30
36
  exports.checkLicense = checkLicense;
31
37
  //# sourceMappingURL=checkLicense.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkLicense.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkLicense.ts"],"names":[],"mappings":";;;AAEA,mEAAgE;AAEhE;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,MAAyB,EACzB,OAAuB;IAEvB,IAAI,MAAM,GAAmB,SAAS,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACjD,MAAM,GAAG,eAAe,CAAC;QACzB,6BAA6B;QAC7B,IACE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,aAAa;YACpC,OAAO,CAAC,UAAU,KAAK,WAAW,EAClC;YACA,MAAM,GAAG,cAAc,CAAC,CAAC,+BAA+B;SACzD;KACF;IAED,MAAM,KAAK,GAAiB;QAC1B,IAAI,EAAE,cAAc,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAChD,KAAK,EAAE,OAAO,CAAC,UAAU;QACzB,IAAI,EAAE,6CAAqB,CAAC,MAAM,CAAC;QACnC,QAAQ,EAAE,MAAM;KACjB,CAAC;IAEF,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAzBD,oCAyBC"}
1
+ {"version":3,"file":"checkLicense.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkLicense.ts"],"names":[],"mappings":";;;AAEA,mEAAgE;AAEhE;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,MAAyB,EACzB,OAAuB,EACvB,MAA4B;;IAE5B,MAAM,MAAM,GAAG,EAAoB,CAAC;IACpC,+CAA+C;IAC/C,UAAI,MAAM,CAAC,QAAQ,0CAAE,MAAM,EAAE;QAC3B,IAAI,MAAM,GAAmB,SAAS,CAAC;QAEvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACjD,MAAM,GAAG,eAAe,CAAC;YACzB,6BAA6B;YAC7B,IACE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,aAAa;gBACpC,OAAO,CAAC,UAAU,KAAK,WAAW,EAClC;gBACA,MAAM,GAAG,cAAc,CAAC,CAAC,+BAA+B;aACzD;SACF;QAED,MAAM,KAAK,GAAiB;YAC1B,IAAI,EAAE,cAAc,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAChD,KAAK,EAAE,OAAO,CAAC,UAAU;YACzB,IAAI,EAAE,6CAAqB,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,MAAM;SACjB,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AA9BD,oCA8BC"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkOwner.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkOwner.ts"],"names":[],"mappings":";;;AAGA,mEAAgE;AAEhE;;;;;;GAMG;AACH,SAAgB,UAAU,CACxB,MAAyB,EACzB,OAAuB,EACvB,MAAkB;IAElB,MAAM,MAAM,GAAG,EAAoB,CAAC;IACpC,+CAA+C;IAC/C,IAAI,MAAM,CAAC,WAAW,EAAE;QACtB,IAAI,QAAQ,GAAmB,SAAS,CAAC;QACzC,IAAI,IAAI,GAAG,uBAAuB,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE;YACX,qBAAqB;YACrB,QAAQ,GAAG,iBAAiB,CAAC;SAC9B;aAAM;YACL,IAAI,GAAG,0BAA0B,MAAM,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE;gBACjD,QAAQ,GAAG,WAAW,CAAC;aACxB;SACF;QAED,mBAAmB;QACnB,MAAM,KAAK,GAAiB;YAC1B,IAAI;YACJ,KAAK,EAAE,iBAAiB,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE;YACtD,IAAI,EAAE,6CAAqB,CAAC,QAAQ,CAAC;YACrC,QAAQ;SACT,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA/BD,gCA+BC"}
1
+ {"version":3,"file":"checkOwner.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkOwner.ts"],"names":[],"mappings":";;;AAEA,mEAAgE;AAEhE;;;;;;GAMG;AACH,SAAgB,UAAU,CACxB,MAAyB,EACzB,OAAuB,EACvB,MAA4B;IAE5B,MAAM,MAAM,GAAG,EAAoB,CAAC;IACpC,+CAA+C;IAC/C,IAAI,MAAM,CAAC,WAAW,EAAE;QACtB,IAAI,QAAQ,GAAmB,SAAS,CAAC;QACzC,IAAI,IAAI,GAAG,uBAAuB,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE;YACX,qBAAqB;YACrB,QAAQ,GAAG,iBAAiB,CAAC;SAC9B;aAAM;YACL,IAAI,GAAG,0BAA0B,MAAM,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE;gBACjD,QAAQ,GAAG,WAAW,CAAC;aACxB;SACF;QAED,mBAAmB;QACnB,MAAM,KAAK,GAAiB;YAC1B,IAAI;YACJ,KAAK,EAAE,iBAAiB,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE;YACtD,IAAI,EAAE,6CAAqB,CAAC,QAAQ,CAAC;YACrC,QAAQ;SACT,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA/BD,gCA+BC"}
@@ -10,21 +10,25 @@ const getPolicyResponseCode_1 = require("./getPolicyResponseCode");
10
10
  * @returns
11
11
  */
12
12
  function checkPrivileges(policy, context, entity) {
13
- const privs = policy.privileges || [];
14
- const checks = privs.map((privilege) => {
15
- let response = "granted";
16
- let value = "privilege present";
17
- if (!context.currentUser.privileges.includes(privilege)) {
18
- response = "privilege-required";
19
- value = "privilege missing";
20
- }
21
- return {
22
- name: `privilege required: ${privilege}`,
23
- value,
24
- response,
25
- code: getPolicyResponseCode_1.getPolicyResponseCode(response),
26
- };
27
- });
13
+ var _a;
14
+ let checks = [];
15
+ // Only return a check if the policy is defined
16
+ if ((_a = policy.privileges) === null || _a === void 0 ? void 0 : _a.length) {
17
+ checks = policy.privileges.map((privilege) => {
18
+ let response = "granted";
19
+ let value = "privilege present";
20
+ if (!context.currentUser.privileges.includes(privilege)) {
21
+ response = "privilege-required";
22
+ value = "privilege missing";
23
+ }
24
+ return {
25
+ name: `privilege required: ${privilege}`,
26
+ value,
27
+ response,
28
+ code: getPolicyResponseCode_1.getPolicyResponseCode(response),
29
+ };
30
+ });
31
+ }
28
32
  return checks;
29
33
  }
30
34
  exports.checkPrivileges = checkPrivileges;
@@ -1 +1 @@
1
- {"version":3,"file":"checkPrivileges.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkPrivileges.ts"],"names":[],"mappings":";;;AAGA,mEAAgE;AAEhE;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,MAAyB,EACzB,OAAuB,EACvB,MAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAEtC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACrC,IAAI,QAAQ,GAAmB,SAAS,CAAC;QACzC,IAAI,KAAK,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACvD,QAAQ,GAAG,oBAAoB,CAAC;YAChC,KAAK,GAAG,mBAAmB,CAAC;SAC7B;QACD,OAAO;YACL,IAAI,EAAE,uBAAuB,SAAS,EAAE;YACxC,KAAK;YACL,QAAQ;YACR,IAAI,EAAE,6CAAqB,CAAC,QAAQ,CAAC;SACtB,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAtBD,0CAsBC"}
1
+ {"version":3,"file":"checkPrivileges.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/checkPrivileges.ts"],"names":[],"mappings":";;;AAEA,mEAAgE;AAEhE;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,MAAyB,EACzB,OAAuB,EACvB,MAA4B;;IAE5B,IAAI,MAAM,GAAG,EAAoB,CAAC;IAClC,+CAA+C;IAC/C,UAAI,MAAM,CAAC,UAAU,0CAAE,MAAM,EAAE;QAC7B,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YAC3C,IAAI,QAAQ,GAAmB,SAAS,CAAC;YACzC,IAAI,KAAK,GAAG,mBAAmB,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBACvD,QAAQ,GAAG,oBAAoB,CAAC;gBAChC,KAAK,GAAG,mBAAmB,CAAC;aAC7B;YACD,OAAO;gBACL,IAAI,EAAE,uBAAuB,SAAS,EAAE;gBACxC,KAAK;gBACL,QAAQ;gBACR,IAAI,EAAE,6CAAqB,CAAC,QAAQ,CAAC;aACtB,CAAC;QACpB,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAzBD,0CAyBC"}
@@ -2,23 +2,41 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPolicyResponseCode = void 0;
4
4
  // TODO: Determine how to keep this in sycn with the PolicyResponse type
5
+ // Crappy tool https://jsbin.com/gojelov/edit?js,console,output
5
6
  const policyResponseCodes = [
6
- { response: "granted", code: "PC001" },
7
- { response: "org-member", code: "PC002" },
8
- { response: "not-org-member", code: "PC003" },
9
- { response: "group-member", code: "PC004" },
10
- { response: "not-group-member", code: "PC005" },
11
- { response: "is-user", code: "PC006" },
12
- { response: "not-owner", code: "PC007" },
13
- { response: "not-licensed", code: "PC008" },
14
- { response: "not-available", code: "PC009" },
15
- { response: "not-granted", code: "PC010" },
16
- { response: "no-edit-access", code: "PC011" },
17
- { response: "invalid-permission", code: "PC012" },
18
- { response: "privilege-required", code: "PC013" },
19
- { response: "system-offline", code: "PC014" },
20
- { response: "system-maintenance", code: "PC015" },
21
- { response: "not-licensed-available", code: "PC016" },
7
+ { response: "granted", code: "PC100" },
8
+ { response: "org-member", code: "PC101" },
9
+ { response: "not-org-member", code: "PC102" },
10
+ { response: "group-member", code: "PC103" },
11
+ { response: "not-group-member", code: "PC104" },
12
+ { response: "not-group-admin", code: "PC105" },
13
+ { response: "is-user", code: "PC106" },
14
+ { response: "not-owner", code: "PC107" },
15
+ { response: "not-licensed", code: "PC108" },
16
+ { response: "not-licensed-available", code: "PC109" },
17
+ { response: "not-available", code: "PC110" },
18
+ { response: "not-granted", code: "PC111" },
19
+ { response: "no-edit-access", code: "PC112" },
20
+ { response: "edit-access", code: "PC113" },
21
+ { response: "invalid-permission", code: "PC114" },
22
+ { response: "privilege-required", code: "PC115" },
23
+ { response: "system-offline", code: "PC116" },
24
+ { response: "system-maintenance", code: "PC117" },
25
+ { response: "entity-required", code: "PC118" },
26
+ { response: "not-authenticated", code: "PC119" },
27
+ { response: "not-alpha-org", code: "PC120" },
28
+ { response: "property-missing", code: "PC121" },
29
+ { response: "property-not-array", code: "PC122" },
30
+ { response: "array-contains-invalid-value", code: "PC123" },
31
+ { response: "array-missing-required-value", code: "PC124" },
32
+ { response: "property-mismatch", code: "PC125" },
33
+ { response: "user-not-group-member", code: "PC126" },
34
+ { response: "user-not-group-manager", code: "PC127" },
35
+ { response: "user-not-group-owner", code: "PC128" },
36
+ { response: "assertion-property-not-found", code: "PC129" },
37
+ { response: "assertion-failed", code: "PC130" },
38
+ { response: "assertion-requires-numeric-values", code: "PC131" },
39
+ { response: "property-match", code: "PC132" },
22
40
  ];
23
41
  /**
24
42
  * Get a code that can be used for i18n or other purposes, based on the PolicyResponse
@@ -1 +1 @@
1
- {"version":3,"file":"getPolicyResponseCode.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/getPolicyResponseCode.ts"],"names":[],"mappings":";;;AAOA,wEAAwE;AACxE,MAAM,mBAAmB,GAAoB;IAC3C,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;IACtC,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;IACzC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7C,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3C,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC/C,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;IACtC,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;IACxC,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3C,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE;IAC5C,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;IAC1C,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7C,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;IACjD,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;IACjD,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC7C,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;IACjD,EAAE,QAAQ,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE;CACtD,CAAC;AAEF;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,QAAwB;IAC5D,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACvE,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,OAAO,CAAC;AAChC,CAAC;AAHD,sDAGC"}
1
+ {"version":3,"file":"getPolicyResponseCode.js","sourceRoot":"","sources":["../../../../src/permissions/_internal/getPolicyResponseCode.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ const checkOwner_1 = require("./_internal/checkOwner");
11
11
  const checkEdit_1 = require("./_internal/checkEdit");
12
12
  const checkPrivileges_1 = require("./_internal/checkPrivileges");
13
13
  const checkEntityPolicy_1 = require("./_internal/checkEntityPolicy");
14
+ const checkAssertions_1 = require("./_internal/checkAssertions");
14
15
  /**
15
16
  * Check a permission against the system policies, and possibly an entity policy
16
17
  * @param permission
@@ -39,13 +40,13 @@ function checkPermission(permission, context, entity) {
39
40
  code: getPolicyResponseCode_1.getPolicyResponseCode("granted"),
40
41
  checks: [],
41
42
  };
42
- // reduce over the check functions and collect all the checks
43
43
  const checks = [
44
44
  checkAuthentication_1.checkAuthentication,
45
45
  checkLicense_1.checkLicense,
46
46
  checkPrivileges_1.checkPrivileges,
47
- checkEdit_1.checkEdit,
48
47
  checkOwner_1.checkOwner,
48
+ checkEdit_1.checkEdit,
49
+ checkAssertions_1.checkAssertions,
49
50
  ].reduce((acc, fn) => {
50
51
  acc = [...acc, ...fn(systemPolicy, context, entity)];
51
52
  return acc;
@@ -1 +1 @@
1
- {"version":3,"file":"checkPermission.js","sourceRoot":"","sources":["../../../src/permissions/checkPermission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkPermission.js","sourceRoot":"","sources":["../../../src/permissions/checkPermission.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isPermission = void 0;
4
+ const ProjectPermissionPolicies_1 = require("../../projects/_internal/ProjectPermissionPolicies");
5
+ const SitesPermissionPolicies_1 = require("../../sites/_internal/SitesPermissionPolicies");
4
6
  /**
5
7
  * Defines the values for Permissions
6
- * Note: This needs to be managed as a single list or typechecking does not work
7
- * We use an array so we can check for valid permissions
8
+ * It's critical that the arrays defined in the modules use `as const`
9
+ * otherwise Permission devolves into just a string type
8
10
  */
9
- const validPermissions = [
10
- "hub:site:create",
11
- "hub:site:delete",
12
- "hub:site:edit",
13
- "hub:site:view",
14
- "hub:project:create",
15
- "hub:project:delete",
16
- "hub:project:edit",
17
- "hub:project:view",
18
- ];
11
+ const validPermissions = [...SitesPermissionPolicies_1.SitePermissions, ...ProjectPermissionPolicies_1.ProjectPermissions];
19
12
  /**
20
13
  * Validate a Permission
21
14
  * @param permission
@@ -1 +1 @@
1
- {"version":3,"file":"Permission.js","sourceRoot":"","sources":["../../../../src/permissions/types/Permission.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,MAAM,gBAAgB,GAAG;IACvB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,oBAAoB;IACpB,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;CACV,CAAC;AAOX;;;;GAIG;AACH,SAAgB,YAAY,CAAC,eAAuB;IAClD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,eAA6B,CAAC,CAAC;AAClE,CAAC;AAFD,oCAEC"}
1
+ {"version":3,"file":"Permission.js","sourceRoot":"","sources":["../../../../src/permissions/types/Permission.ts"],"names":[],"mappings":";;;AAAA,kGAAwF;AACxF,2FAAgF;AAEhF;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,GAAG,yCAAe,EAAE,GAAG,8CAAkB,CAAU,CAAC;AAO9E;;;;GAIG;AACH,SAAgB,YAAY,CAAC,eAAuB;IAClD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,eAA6B,CAAC,CAAC;AAClE,CAAC;AAFD,oCAEC"}
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProjectPermissionPolicies = void 0;
3
+ exports.ProjectPermissionPolicies = exports.ProjectPermissions = void 0;
4
4
  /**
5
5
  * Project Permission Policies
6
6
  * These define the requirements any user must meet to perform related actions
7
7
  * @private
8
8
  */
9
+ exports.ProjectPermissions = [
10
+ "hub:project:create",
11
+ "hub:project:delete",
12
+ "hub:project:edit",
13
+ "hub:project:view",
14
+ ];
9
15
  exports.ProjectPermissionPolicies = [
10
16
  {
11
17
  permission: "hub:project:create",