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

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 (214) hide show
  1. package/dist/esm/ArcGISContext.js +24 -1
  2. package/dist/esm/ArcGISContext.js.map +1 -1
  3. package/dist/esm/ArcGISContextManager.js +48 -0
  4. package/dist/esm/ArcGISContextManager.js.map +1 -1
  5. package/dist/esm/content/compose.js +12 -0
  6. package/dist/esm/content/compose.js.map +1 -1
  7. package/dist/esm/core/HubItemEntity.js +39 -57
  8. package/dist/esm/core/HubItemEntity.js.map +1 -1
  9. package/dist/esm/core/_internal/PropertyMapper.js +10 -2
  10. package/dist/esm/core/_internal/PropertyMapper.js.map +1 -1
  11. package/dist/esm/core/_internal/getBasePropertyMap.js +1 -0
  12. package/dist/esm/core/_internal/getBasePropertyMap.js.map +1 -1
  13. package/dist/esm/core/behaviors/IWithPermissionBehavior.js +0 -68
  14. package/dist/esm/core/behaviors/IWithPermissionBehavior.js.map +1 -1
  15. package/dist/esm/core/fetchHubEntity.js +28 -0
  16. package/dist/esm/core/fetchHubEntity.js.map +1 -0
  17. package/dist/esm/core/getTypeFromEntity.js +26 -0
  18. package/dist/esm/core/getTypeFromEntity.js.map +1 -0
  19. package/dist/esm/core/index.js +2 -1
  20. package/dist/esm/core/index.js.map +1 -1
  21. package/dist/esm/core/types/HubEntity.js +1 -0
  22. package/dist/esm/core/types/HubEntity.js.map +1 -0
  23. package/dist/esm/core/types/HubEntityType.js +1 -0
  24. package/dist/esm/core/types/HubEntityType.js.map +1 -0
  25. package/dist/esm/core/types/ISystemStatus.js +21 -0
  26. package/dist/esm/core/types/ISystemStatus.js.map +1 -0
  27. package/dist/esm/core/types/index.js +3 -2
  28. package/dist/esm/core/types/index.js.map +1 -1
  29. package/dist/esm/index.js +1 -0
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/initiatives/HubInitiative.js +0 -13
  32. package/dist/esm/initiatives/HubInitiative.js.map +1 -1
  33. package/dist/esm/permissions/HubPermissionPolicies.js +18 -0
  34. package/dist/esm/permissions/HubPermissionPolicies.js.map +1 -0
  35. package/dist/esm/permissions/_internal/checkAuthentication.js +24 -0
  36. package/dist/esm/permissions/_internal/checkAuthentication.js.map +1 -0
  37. package/dist/esm/permissions/_internal/checkEdit.js +35 -0
  38. package/dist/esm/permissions/_internal/checkEdit.js.map +1 -0
  39. package/dist/esm/permissions/_internal/checkEntityPolicy.js +56 -0
  40. package/dist/esm/permissions/_internal/checkEntityPolicy.js.map +1 -0
  41. package/dist/esm/permissions/_internal/checkLicense.js +27 -0
  42. package/dist/esm/permissions/_internal/checkLicense.js.map +1 -0
  43. package/dist/esm/permissions/_internal/checkOwner.js +36 -0
  44. package/dist/esm/permissions/_internal/checkOwner.js.map +1 -0
  45. package/dist/esm/permissions/_internal/checkPrivileges.js +27 -0
  46. package/dist/esm/permissions/_internal/checkPrivileges.js.map +1 -0
  47. package/dist/esm/permissions/_internal/getPolicyResponseCode.js +29 -0
  48. package/dist/esm/permissions/_internal/getPolicyResponseCode.js.map +1 -0
  49. package/dist/esm/permissions/checkPermission.js +88 -0
  50. package/dist/esm/permissions/checkPermission.js.map +1 -0
  51. package/dist/esm/permissions/index.js +5 -0
  52. package/dist/esm/permissions/index.js.map +1 -0
  53. package/dist/esm/permissions/types/HubLicense.js +1 -0
  54. package/dist/esm/permissions/types/HubLicense.js.map +1 -0
  55. package/dist/esm/permissions/types/IAccessResponse.js +1 -0
  56. package/dist/esm/permissions/types/IAccessResponse.js.map +1 -0
  57. package/dist/esm/permissions/types/IEntityPermissionPolicy.js +1 -0
  58. package/dist/esm/permissions/types/IEntityPermissionPolicy.js.map +1 -0
  59. package/dist/esm/permissions/types/IPermissionPolicy.js +1 -0
  60. package/dist/esm/permissions/types/IPermissionPolicy.js.map +1 -0
  61. package/dist/esm/permissions/types/IPolicyCheck.js +1 -0
  62. package/dist/esm/permissions/types/IPolicyCheck.js.map +1 -0
  63. package/dist/esm/permissions/types/Permission.js +24 -0
  64. package/dist/esm/permissions/types/Permission.js.map +1 -0
  65. package/dist/esm/permissions/types/PlatformPrivilege.js +5 -0
  66. package/dist/esm/permissions/types/PlatformPrivilege.js.map +1 -0
  67. package/dist/esm/permissions/types/PolicyResponse.js +4 -0
  68. package/dist/esm/permissions/types/PolicyResponse.js.map +1 -0
  69. package/dist/esm/permissions/types/index.js +9 -0
  70. package/dist/esm/permissions/types/index.js.map +1 -0
  71. package/dist/esm/permissions/utils.js +26 -0
  72. package/dist/esm/permissions/utils.js.map +1 -0
  73. package/dist/esm/projects/HubProject.js +0 -13
  74. package/dist/esm/projects/HubProject.js.map +1 -1
  75. package/dist/esm/projects/_internal/ProjectPermissionPolicies.js +35 -0
  76. package/dist/esm/projects/_internal/ProjectPermissionPolicies.js.map +1 -0
  77. package/dist/esm/search/Catalog.js.map +1 -1
  78. package/dist/esm/sites/HubSite.js +0 -13
  79. package/dist/esm/sites/HubSite.js.map +1 -1
  80. package/dist/esm/sites/_internal/SitesPermissionPolicies.js +34 -0
  81. package/dist/esm/sites/_internal/SitesPermissionPolicies.js.map +1 -0
  82. package/dist/node/ArcGISContext.js +28 -5
  83. package/dist/node/ArcGISContext.js.map +1 -1
  84. package/dist/node/ArcGISContextManager.js +48 -0
  85. package/dist/node/ArcGISContextManager.js.map +1 -1
  86. package/dist/node/content/compose.js +12 -0
  87. package/dist/node/content/compose.js.map +1 -1
  88. package/dist/node/core/HubItemEntity.js +38 -56
  89. package/dist/node/core/HubItemEntity.js.map +1 -1
  90. package/dist/node/core/_internal/PropertyMapper.js +9 -1
  91. package/dist/node/core/_internal/PropertyMapper.js.map +1 -1
  92. package/dist/node/core/_internal/getBasePropertyMap.js +1 -0
  93. package/dist/node/core/_internal/getBasePropertyMap.js.map +1 -1
  94. package/dist/node/core/behaviors/IWithPermissionBehavior.js +0 -73
  95. package/dist/node/core/behaviors/IWithPermissionBehavior.js.map +1 -1
  96. package/dist/node/core/fetchHubEntity.js +32 -0
  97. package/dist/node/core/fetchHubEntity.js.map +1 -0
  98. package/dist/node/core/getTypeFromEntity.js +30 -0
  99. package/dist/node/core/getTypeFromEntity.js.map +1 -0
  100. package/dist/node/core/index.js +2 -1
  101. package/dist/node/core/index.js.map +1 -1
  102. package/dist/node/core/types/{IHubPermission.js → HubEntity.js} +1 -1
  103. package/dist/node/core/types/HubEntity.js.map +1 -0
  104. package/dist/node/core/types/HubEntityType.js +3 -0
  105. package/dist/node/core/types/HubEntityType.js.map +1 -0
  106. package/dist/node/core/types/ISystemStatus.js +25 -0
  107. package/dist/node/core/types/ISystemStatus.js.map +1 -0
  108. package/dist/node/core/types/index.js +3 -2
  109. package/dist/node/core/types/index.js.map +1 -1
  110. package/dist/node/index.js +1 -0
  111. package/dist/node/index.js.map +1 -1
  112. package/dist/node/initiatives/HubInitiative.js +0 -13
  113. package/dist/node/initiatives/HubInitiative.js.map +1 -1
  114. package/dist/node/permissions/HubPermissionPolicies.js +22 -0
  115. package/dist/node/permissions/HubPermissionPolicies.js.map +1 -0
  116. package/dist/node/permissions/_internal/checkAuthentication.js +28 -0
  117. package/dist/node/permissions/_internal/checkAuthentication.js.map +1 -0
  118. package/dist/node/permissions/_internal/checkEdit.js +39 -0
  119. package/dist/node/permissions/_internal/checkEdit.js.map +1 -0
  120. package/dist/node/permissions/_internal/checkEntityPolicy.js +60 -0
  121. package/dist/node/permissions/_internal/checkEntityPolicy.js.map +1 -0
  122. package/dist/node/permissions/_internal/checkLicense.js +31 -0
  123. package/dist/node/permissions/_internal/checkLicense.js.map +1 -0
  124. package/dist/node/permissions/_internal/checkOwner.js +40 -0
  125. package/dist/node/permissions/_internal/checkOwner.js.map +1 -0
  126. package/dist/node/permissions/_internal/checkPrivileges.js +31 -0
  127. package/dist/node/permissions/_internal/checkPrivileges.js.map +1 -0
  128. package/dist/node/permissions/_internal/getPolicyResponseCode.js +33 -0
  129. package/dist/node/permissions/_internal/getPolicyResponseCode.js.map +1 -0
  130. package/dist/node/permissions/checkPermission.js +92 -0
  131. package/dist/node/permissions/checkPermission.js.map +1 -0
  132. package/dist/node/permissions/index.js +8 -0
  133. package/dist/node/permissions/index.js.map +1 -0
  134. package/dist/node/permissions/types/HubLicense.js +3 -0
  135. package/dist/node/permissions/types/HubLicense.js.map +1 -0
  136. package/dist/node/permissions/types/IAccessResponse.js +3 -0
  137. package/dist/node/permissions/types/IAccessResponse.js.map +1 -0
  138. package/dist/node/permissions/types/IEntityPermissionPolicy.js +3 -0
  139. package/dist/node/permissions/types/IEntityPermissionPolicy.js.map +1 -0
  140. package/dist/node/permissions/types/IPermissionPolicy.js +3 -0
  141. package/dist/node/permissions/types/IPermissionPolicy.js.map +1 -0
  142. package/dist/node/permissions/types/IPolicyCheck.js +3 -0
  143. package/dist/node/permissions/types/IPolicyCheck.js.map +1 -0
  144. package/dist/node/permissions/types/Permission.js +28 -0
  145. package/dist/node/permissions/types/Permission.js.map +1 -0
  146. package/dist/node/permissions/types/PlatformPrivilege.js +7 -0
  147. package/dist/node/permissions/types/PlatformPrivilege.js.map +1 -0
  148. package/dist/node/permissions/types/PolicyResponse.js +6 -0
  149. package/dist/node/permissions/types/PolicyResponse.js.map +1 -0
  150. package/dist/node/permissions/types/index.js +12 -0
  151. package/dist/node/permissions/types/index.js.map +1 -0
  152. package/dist/node/permissions/utils.js +31 -0
  153. package/dist/node/permissions/utils.js.map +1 -0
  154. package/dist/node/projects/HubProject.js +0 -13
  155. package/dist/node/projects/HubProject.js.map +1 -1
  156. package/dist/node/projects/_internal/ProjectPermissionPolicies.js +38 -0
  157. package/dist/node/projects/_internal/ProjectPermissionPolicies.js.map +1 -0
  158. package/dist/node/search/Catalog.js.map +1 -1
  159. package/dist/node/sites/HubSite.js +0 -13
  160. package/dist/node/sites/HubSite.js.map +1 -1
  161. package/dist/node/sites/_internal/SitesPermissionPolicies.js +37 -0
  162. package/dist/node/sites/_internal/SitesPermissionPolicies.js.map +1 -0
  163. package/dist/types/ArcGISContext.d.ts +23 -1
  164. package/dist/types/ArcGISContextManager.d.ts +6 -1
  165. package/dist/types/content/_internal.d.ts +15 -5
  166. package/dist/types/core/HubItemEntity.d.ts +29 -4
  167. package/dist/types/core/behaviors/IWithPermissionBehavior.d.ts +23 -35
  168. package/dist/types/core/behaviors/IWithStoreBehavior.d.ts +10 -10
  169. package/dist/types/core/fetchHubEntity.d.ts +11 -0
  170. package/dist/types/core/getTypeFromEntity.d.ts +8 -0
  171. package/dist/types/core/index.d.ts +2 -1
  172. package/dist/types/core/traits/IWithPermissions.d.ts +3 -3
  173. package/dist/types/core/types/HubEntity.d.ts +5 -0
  174. package/dist/types/core/types/HubEntityType.d.ts +1 -0
  175. package/dist/types/core/types/IHubContent.d.ts +2 -1
  176. package/dist/types/core/types/IHubItemEntity.d.ts +19 -2
  177. package/dist/types/core/types/ISystemStatus.d.ts +22 -0
  178. package/dist/types/core/types/index.d.ts +3 -2
  179. package/dist/types/index.d.ts +1 -0
  180. package/dist/types/initiatives/HubInitiative.d.ts +1 -7
  181. package/dist/types/permissions/HubPermissionPolicies.d.ts +11 -0
  182. package/dist/types/permissions/_internal/checkAuthentication.d.ts +11 -0
  183. package/dist/types/permissions/_internal/checkEdit.d.ts +11 -0
  184. package/dist/types/permissions/_internal/checkEntityPolicy.d.ts +9 -0
  185. package/dist/types/permissions/_internal/checkLicense.d.ts +10 -0
  186. package/dist/types/permissions/_internal/checkOwner.d.ts +11 -0
  187. package/dist/types/permissions/_internal/checkPrivileges.d.ts +11 -0
  188. package/dist/types/permissions/_internal/getPolicyResponseCode.d.ts +7 -0
  189. package/dist/types/permissions/checkPermission.d.ts +11 -0
  190. package/dist/types/permissions/index.d.ts +4 -0
  191. package/dist/types/permissions/types/HubLicense.d.ts +4 -0
  192. package/dist/types/permissions/types/IAccessResponse.d.ts +29 -0
  193. package/dist/types/permissions/types/IEntityPermissionPolicy.d.ts +22 -0
  194. package/dist/types/permissions/types/IPermissionPolicy.d.ts +48 -0
  195. package/dist/types/permissions/types/IPolicyCheck.d.ts +25 -0
  196. package/dist/types/permissions/types/Permission.d.ts +17 -0
  197. package/dist/types/permissions/types/PlatformPrivilege.d.ts +5 -0
  198. package/dist/types/permissions/types/PolicyResponse.d.ts +4 -0
  199. package/dist/types/permissions/types/index.d.ts +8 -0
  200. package/dist/types/permissions/utils.d.ts +18 -0
  201. package/dist/types/projects/HubProject.d.ts +1 -7
  202. package/dist/types/projects/_internal/ProjectPermissionPolicies.d.ts +7 -0
  203. package/dist/types/sites/HubSite.d.ts +1 -7
  204. package/dist/types/sites/_internal/SitesPermissionPolicies.d.ts +6 -0
  205. package/package.json +1 -1
  206. package/dist/esm/core/PermissionManager.js +0 -60
  207. package/dist/esm/core/PermissionManager.js.map +0 -1
  208. package/dist/esm/core/types/IHubPermission.js +0 -1
  209. package/dist/esm/core/types/IHubPermission.js.map +0 -1
  210. package/dist/node/core/PermissionManager.js +0 -64
  211. package/dist/node/core/PermissionManager.js.map +0 -1
  212. package/dist/node/core/types/IHubPermission.js.map +0 -1
  213. package/dist/types/core/PermissionManager.d.ts +0 -43
  214. package/dist/types/core/types/IHubPermission.d.ts +0 -23
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkEntityPolicy = void 0;
4
+ const objects_1 = require("../../objects");
5
+ const getPolicyResponseCode_1 = require("./getPolicyResponseCode");
6
+ /**
7
+ * Validate user meets entity policy
8
+ * @param policy
9
+ * @param context
10
+ * @returns
11
+ */
12
+ function checkEntityPolicy(policy, context) {
13
+ const user = context.currentUser;
14
+ const userGroups = user.groups || [];
15
+ let response = "not-granted";
16
+ const type = policy.collaborationType;
17
+ const id = policy.collaborationId;
18
+ if (type === "user") {
19
+ if (id === user.username) {
20
+ response = "granted";
21
+ }
22
+ else {
23
+ response = "not-granted";
24
+ }
25
+ }
26
+ if (type === "org") {
27
+ if (id === user.orgId) {
28
+ response = "granted";
29
+ }
30
+ else {
31
+ response = "not-org-member";
32
+ }
33
+ }
34
+ if (type === "group") {
35
+ if (userGroups.find((g) => g.id === id)) {
36
+ response = "granted";
37
+ }
38
+ else {
39
+ response = "not-group-member";
40
+ }
41
+ }
42
+ if (type === "group-admin") {
43
+ const group = userGroups.find((g) => g.id === id);
44
+ if (objects_1.getProp(group, "userMembership.memberType") === "admin") {
45
+ response = "granted";
46
+ }
47
+ else {
48
+ response = "not-group-admin";
49
+ }
50
+ }
51
+ const check = {
52
+ name: "entity:policy",
53
+ value: `${policy.collaborationType}:${policy.collaborationId}`,
54
+ response,
55
+ code: getPolicyResponseCode_1.getPolicyResponseCode(response),
56
+ };
57
+ return check;
58
+ }
59
+ exports.checkEntityPolicy = checkEntityPolicy;
60
+ //# sourceMappingURL=checkEntityPolicy.js.map
@@ -0,0 +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"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkLicense = void 0;
4
+ const getPolicyResponseCode_1 = require("./getPolicyResponseCode");
5
+ /**
6
+ * Validate license policy
7
+ * @param policy
8
+ * @param response
9
+ * @param context
10
+ * @returns
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
20
+ }
21
+ }
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];
29
+ }
30
+ exports.checkLicense = checkLicense;
31
+ //# sourceMappingURL=checkLicense.js.map
@@ -0,0 +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"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkOwner = void 0;
4
+ const getPolicyResponseCode_1 = require("./getPolicyResponseCode");
5
+ /**
6
+ * Validate entityOwner policy
7
+ * @param policy
8
+ * @param context
9
+ * @param entity
10
+ * @returns
11
+ */
12
+ function checkOwner(policy, context, entity) {
13
+ const checks = [];
14
+ // Only return a check if the policy is defined
15
+ if (policy.entityOwner) {
16
+ let response = "granted";
17
+ let name = "entity owner required";
18
+ if (!entity) {
19
+ // fail b/c no entity
20
+ response = "entity-required";
21
+ }
22
+ else {
23
+ name = `entity owner required: ${entity.owner}`;
24
+ if (entity.owner !== context.currentUser.username) {
25
+ response = "not-owner";
26
+ }
27
+ }
28
+ // create the check
29
+ const check = {
30
+ name,
31
+ value: `current user: ${context.currentUser.username}`,
32
+ code: getPolicyResponseCode_1.getPolicyResponseCode(response),
33
+ response,
34
+ };
35
+ checks.push(check);
36
+ }
37
+ return checks;
38
+ }
39
+ exports.checkOwner = checkOwner;
40
+ //# sourceMappingURL=checkOwner.js.map
@@ -0,0 +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"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkPrivileges = void 0;
4
+ const getPolicyResponseCode_1 = require("./getPolicyResponseCode");
5
+ /**
6
+ * Validate privilege policy
7
+ * @param policy
8
+ * @param context
9
+ * @param entity
10
+ * @returns
11
+ */
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
+ });
28
+ return checks;
29
+ }
30
+ exports.checkPrivileges = checkPrivileges;
31
+ //# sourceMappingURL=checkPrivileges.js.map
@@ -0,0 +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"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPolicyResponseCode = void 0;
4
+ // TODO: Determine how to keep this in sycn with the PolicyResponse type
5
+ 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" },
22
+ ];
23
+ /**
24
+ * Get a code that can be used for i18n or other purposes, based on the PolicyResponse
25
+ * @param response
26
+ * @returns
27
+ */
28
+ function getPolicyResponseCode(response) {
29
+ const entry = policyResponseCodes.find((x) => x.response === response);
30
+ return (entry === null || entry === void 0 ? void 0 : entry.code) || "PC000";
31
+ }
32
+ exports.getPolicyResponseCode = getPolicyResponseCode;
33
+ //# sourceMappingURL=getPolicyResponseCode.js.map
@@ -0,0 +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"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkPermission = void 0;
4
+ const objects_1 = require("../objects");
5
+ const checkLicense_1 = require("./_internal/checkLicense");
6
+ const HubPermissionPolicies_1 = require("./HubPermissionPolicies");
7
+ const types_1 = require("./types");
8
+ const getPolicyResponseCode_1 = require("./_internal/getPolicyResponseCode");
9
+ const checkAuthentication_1 = require("./_internal/checkAuthentication");
10
+ const checkOwner_1 = require("./_internal/checkOwner");
11
+ const checkEdit_1 = require("./_internal/checkEdit");
12
+ const checkPrivileges_1 = require("./_internal/checkPrivileges");
13
+ const checkEntityPolicy_1 = require("./_internal/checkEntityPolicy");
14
+ /**
15
+ * Check a permission against the system policies, and possibly an entity policy
16
+ * @param permission
17
+ * @param context
18
+ * @param entity
19
+ * @returns
20
+ */
21
+ function checkPermission(permission, context, entity) {
22
+ // Early Exit: Is this even a valid permission?
23
+ if (!types_1.isPermission(permission)) {
24
+ return {
25
+ permission,
26
+ access: false,
27
+ response: "invalid-permission",
28
+ code: getPolicyResponseCode_1.getPolicyResponseCode("invalid-permission"),
29
+ checks: [],
30
+ };
31
+ }
32
+ // Get the system policy for this permission
33
+ const systemPolicy = HubPermissionPolicies_1.getPermissionPolicy(permission);
34
+ // Default to granted
35
+ const response = {
36
+ permission,
37
+ access: true,
38
+ response: "granted",
39
+ code: getPolicyResponseCode_1.getPolicyResponseCode("granted"),
40
+ checks: [],
41
+ };
42
+ // reduce over the check functions and collect all the checks
43
+ const checks = [
44
+ checkAuthentication_1.checkAuthentication,
45
+ checkLicense_1.checkLicense,
46
+ checkPrivileges_1.checkPrivileges,
47
+ checkEdit_1.checkEdit,
48
+ checkOwner_1.checkOwner,
49
+ ].reduce((acc, fn) => {
50
+ acc = [...acc, ...fn(systemPolicy, context, entity)];
51
+ return acc;
52
+ }, []);
53
+ // For system policies, all conditions must be met, so we can
54
+ // iterate through the checks and set the response to the first failure
55
+ // while still returning all the checks for observability
56
+ checks.forEach((check) => {
57
+ if (check.response !== "granted" && response.response === "granted") {
58
+ response.response = check.response;
59
+ response.code = check.code;
60
+ response.access = false;
61
+ }
62
+ });
63
+ response.checks = checks;
64
+ // Entity policies are treated as "grants" so we only need to pass one
65
+ if (entity) {
66
+ const entityPolicies = objects_1.getWithDefault(entity, "permissions", []);
67
+ const entityPermissionPolicies = entityPolicies.filter((e) => e.permission === permission);
68
+ // Entity Policies are "grants" in that only one needs to pass
69
+ // but we still want each check returned so we can see why they
70
+ // got access or got denied
71
+ const entityChecks = entityPermissionPolicies.map((policy) => {
72
+ return checkEntityPolicy_1.checkEntityPolicy(policy, context);
73
+ });
74
+ // Process them to see if any grant access
75
+ const grantedCheck = entityChecks.find((e) => e.response === "granted");
76
+ // If we did not find a check that grants access, AND we've passed
77
+ // all the system checks, then we set the response to "not-granted"
78
+ // and set the access to false
79
+ if (entityChecks.length &&
80
+ !grantedCheck &&
81
+ response.response === "granted") {
82
+ response.access = false;
83
+ response.response = "not-granted";
84
+ }
85
+ // Merge in the entity checks...
86
+ response.checks = [...response.checks, ...entityChecks];
87
+ }
88
+ // return the response
89
+ return response;
90
+ }
91
+ exports.checkPermission = checkPermission;
92
+ //# sourceMappingURL=checkPermission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkPermission.js","sourceRoot":"","sources":["../../../src/permissions/checkPermission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./HubPermissionPolicies"), exports);
5
+ tslib_1.__exportStar(require("./checkPermission"), exports);
6
+ tslib_1.__exportStar(require("./utils"), exports);
7
+ tslib_1.__exportStar(require("./types"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/permissions/index.ts"],"names":[],"mappings":";;;AAAA,kEAAwC;AACxC,4DAAkC;AAClC,kDAAwB;AACxB,kDAAwB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=HubLicense.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HubLicense.js","sourceRoot":"","sources":["../../../../src/permissions/types/HubLicense.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IAccessResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IAccessResponse.js","sourceRoot":"","sources":["../../../../src/permissions/types/IAccessResponse.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IEntityPermissionPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEntityPermissionPolicy.js","sourceRoot":"","sources":["../../../../src/permissions/types/IEntityPermissionPolicy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IPermissionPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPermissionPolicy.js","sourceRoot":"","sources":["../../../../src/permissions/types/IPermissionPolicy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IPolicyCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPolicyCheck.js","sourceRoot":"","sources":["../../../../src/permissions/types/IPolicyCheck.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPermission = void 0;
4
+ /**
5
+ * 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
+ */
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
+ ];
19
+ /**
20
+ * Validate a Permission
21
+ * @param permission
22
+ * @returns
23
+ */
24
+ function isPermission(maybePermission) {
25
+ return validPermissions.includes(maybePermission);
26
+ }
27
+ exports.isPermission = isPermission;
28
+ //# sourceMappingURL=Permission.js.map
@@ -0,0 +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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Type that defines Platform Privileges
4
+ * TODO: Ensure this is a complete list
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=PlatformPrivilege.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlatformPrivilege.js","sourceRoot":"","sources":["../../../../src/permissions/types/PlatformPrivilege.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**`
3
+ * Human readable response from a policy check
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=PolicyResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyResponse.js","sourceRoot":"","sources":["../../../../src/permissions/types/PolicyResponse.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./HubLicense"), exports);
5
+ tslib_1.__exportStar(require("./IAccessResponse"), exports);
6
+ tslib_1.__exportStar(require("./IEntityPermissionPolicy"), exports);
7
+ tslib_1.__exportStar(require("./IPermissionPolicy"), exports);
8
+ tslib_1.__exportStar(require("./IPolicyCheck"), exports);
9
+ tslib_1.__exportStar(require("./Permission"), exports);
10
+ tslib_1.__exportStar(require("./PlatformPrivilege"), exports);
11
+ tslib_1.__exportStar(require("./PolicyResponse"), exports);
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/permissions/types/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,4DAAkC;AAClC,oEAA0C;AAC1C,8DAAoC;AACpC,yDAA+B;AAC/B,uDAA6B;AAC7B,8DAAoC;AACpC,2DAAiC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removePermissionPolicy = exports.addPermissionPolicy = void 0;
4
+ const util_1 = require("../util");
5
+ /**
6
+ * Add a policy to an array of entity policies
7
+ * Returns a new array
8
+ * @param permissions
9
+ * @param policy
10
+ * @returns
11
+ */
12
+ function addPermissionPolicy(permissions = [], policy) {
13
+ const clone = removePermissionPolicy(permissions, policy.permission, policy.collaborationId);
14
+ clone.push(policy);
15
+ return clone;
16
+ }
17
+ exports.addPermissionPolicy = addPermissionPolicy;
18
+ /**
19
+ * Remove a policy from an array of entity policies
20
+ * Returns a new array
21
+ * @param permissions
22
+ * @param permission
23
+ * @param id
24
+ * @returns
25
+ */
26
+ function removePermissionPolicy(permissions = [], permission, id) {
27
+ const clone = util_1.cloneObject(permissions);
28
+ return clone.filter((p) => p.permission !== permission || p.collaborationId !== id);
29
+ }
30
+ exports.removePermissionPolicy = removePermissionPolicy;
31
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/permissions/utils.ts"],"names":[],"mappings":";;;AAAA,kCAAsC;AAGtC;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,cAAyC,EAAE,EAC3C,MAA+B;IAE/B,MAAM,KAAK,GAAG,sBAAsB,CAClC,WAAW,EACX,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,eAAe,CACvB,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,kDAWC;AAED;;;;;;;GAOG;AACH,SAAgB,sBAAsB,CACpC,cAAyC,EAAE,EAC3C,UAAsB,EACtB,EAAU;IAEV,MAAM,KAAK,GAAG,kBAAW,CAAC,WAAW,CAAC,CAAC;IAEvC,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,eAAe,KAAK,EAAE,CAC/D,CAAC;AACJ,CAAC;AAVD,wDAUC"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HubProject = void 0;
4
4
  const defaults_1 = require("./defaults");
5
- const core_1 = require("../core");
6
5
  const Catalog_1 = require("../search/Catalog");
7
6
  const HubItemEntity_1 = require("../core/HubItemEntity");
8
7
  // NOTE: this could be lazy-loaded just like the CUD functions
@@ -19,7 +18,6 @@ class HubProject extends HubItemEntity_1.HubItemEntity {
19
18
  constructor(project, context) {
20
19
  super(project, context);
21
20
  this._catalog = Catalog_1.Catalog.fromJson(project.catalog, this.context);
22
- this._permissionManager = core_1.PermissionManager.fromJson(project.permissions, this.context);
23
21
  }
24
22
  /**
25
23
  * Catalog instance for this project. Note: Do not hold direct references to this object; always access it from the project.
@@ -28,13 +26,6 @@ class HubProject extends HubItemEntity_1.HubItemEntity {
28
26
  get catalog() {
29
27
  return this._catalog;
30
28
  }
31
- /**
32
- * PermissionManager instance for this project. Note: Do not hold direct references to this object; always access it from the project.
33
- * @returns
34
- */
35
- get permissions() {
36
- return this._permissionManager;
37
- }
38
29
  /**
39
30
  * Create an instance from an IHubProject object
40
31
  * @param json - JSON object to create a HubProject from
@@ -122,9 +113,6 @@ class HubProject extends HubItemEntity_1.HubItemEntity {
122
113
  if (changes.catalog) {
123
114
  this._catalog = Catalog_1.Catalog.fromJson(this.entity.catalog, this.context);
124
115
  }
125
- if (changes.permissions) {
126
- this._permissionManager = core_1.PermissionManager.fromJson(this.entity.permissions, this.context);
127
- }
128
116
  }
129
117
  /**
130
118
  * Save the HubProject to the backing store. Currently Projects are stored as Items in Portal
@@ -136,7 +124,6 @@ class HubProject extends HubItemEntity_1.HubItemEntity {
136
124
  }
137
125
  // get the catalog, and permission configs
138
126
  this.entity.catalog = this._catalog.toJson();
139
- this.entity.permissions = this._permissionManager.toJson();
140
127
  const { createProject, updateProject } = await Promise.resolve().then(() => require("./edit"));
141
128
  if (this.entity.id) {
142
129
  // update it
@@ -1 +1 @@
1
- {"version":3,"file":"HubProject.js","sourceRoot":"","sources":["../../../src/projects/HubProject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HubProject.js","sourceRoot":"","sources":["../../../src/projects/HubProject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProjectPermissionPolicies = void 0;
4
+ /**
5
+ * Project Permission Policies
6
+ * These define the requirements any user must meet to perform related actions
7
+ * @private
8
+ */
9
+ exports.ProjectPermissionPolicies = [
10
+ {
11
+ permission: "hub:project:create",
12
+ subsystems: ["projects"],
13
+ authenticated: true,
14
+ privileges: ["portal:user:createItem"],
15
+ licenses: ["hub-premium"],
16
+ },
17
+ {
18
+ permission: "hub:project:view",
19
+ subsystems: ["projects"],
20
+ authenticated: false,
21
+ licenses: ["hub-premium"],
22
+ },
23
+ {
24
+ permission: "hub:project:edit",
25
+ authenticated: true,
26
+ subsystems: ["projects"],
27
+ entityEdit: true,
28
+ licenses: ["hub-premium"],
29
+ },
30
+ {
31
+ permission: "hub:project:delete",
32
+ authenticated: true,
33
+ subsystems: ["projects"],
34
+ entityOwner: true,
35
+ licenses: ["hub-premium"],
36
+ },
37
+ ];
38
+ //# sourceMappingURL=ProjectPermissionPolicies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectPermissionPolicies.js","sourceRoot":"","sources":["../../../../src/projects/_internal/ProjectPermissionPolicies.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACU,QAAA,yBAAyB,GAAwB;IAC5D;QACE,UAAU,EAAE,oBAAoB;QAChC,UAAU,EAAE,CAAC,UAAU,CAAC;QACxB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD;QACE,UAAU,EAAE,kBAAkB;QAC9B,UAAU,EAAE,CAAC,UAAU,CAAC;QACxB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD;QACE,UAAU,EAAE,kBAAkB;QAC9B,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,CAAC,UAAU,CAAC;QACxB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD;QACE,UAAU,EAAE,oBAAoB;QAChC,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,CAAC,UAAU,CAAC;QACxB,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;CACF,CAAC"}