@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,11 @@
1
+ import { IArcGISContext } from "../../ArcGISContext";
2
+ import { HubEntity } from "../../core";
3
+ import { IPermissionPolicy, IPolicyCheck } from "../types";
4
+ /**
5
+ * Validate authentication policy
6
+ * @param policy
7
+ * @param context
8
+ * @param entity
9
+ * @returns
10
+ */
11
+ export declare function checkAuthentication(policy: IPermissionPolicy, context: IArcGISContext, entity?: HubEntity): IPolicyCheck[];
@@ -0,0 +1,11 @@
1
+ import { IArcGISContext } from "../../ArcGISContext";
2
+ import { HubEntity } from "../../core";
3
+ import { IPermissionPolicy, IPolicyCheck } from "../types";
4
+ /**
5
+ * Validate entityEdit policy
6
+ * @param policy
7
+ * @param context
8
+ * @param entity
9
+ * @returns
10
+ */
11
+ export declare function checkEdit(policy: IPermissionPolicy, context: IArcGISContext, entity?: HubEntity): IPolicyCheck[];
@@ -0,0 +1,9 @@
1
+ import { IArcGISContext } from "../../ArcGISContext";
2
+ import { IPolicyCheck, IEntityPermissionPolicy } from "../types";
3
+ /**
4
+ * Validate user meets entity policy
5
+ * @param policy
6
+ * @param context
7
+ * @returns
8
+ */
9
+ export declare function checkEntityPolicy(policy: IEntityPermissionPolicy, context: IArcGISContext): IPolicyCheck;
@@ -0,0 +1,10 @@
1
+ import { IArcGISContext } from "../../ArcGISContext";
2
+ import { IPermissionPolicy, IPolicyCheck } from "../types";
3
+ /**
4
+ * Validate license policy
5
+ * @param policy
6
+ * @param response
7
+ * @param context
8
+ * @returns
9
+ */
10
+ export declare function checkLicense(policy: IPermissionPolicy, context: IArcGISContext): IPolicyCheck[];
@@ -0,0 +1,11 @@
1
+ import { IArcGISContext } from "../../ArcGISContext";
2
+ import { HubEntity } from "../../core";
3
+ import { IPermissionPolicy, IPolicyCheck } from "../types";
4
+ /**
5
+ * Validate entityOwner policy
6
+ * @param policy
7
+ * @param context
8
+ * @param entity
9
+ * @returns
10
+ */
11
+ export declare function checkOwner(policy: IPermissionPolicy, context: IArcGISContext, entity?: HubEntity): IPolicyCheck[];
@@ -0,0 +1,11 @@
1
+ import { IArcGISContext } from "../../ArcGISContext";
2
+ import { HubEntity } from "../../core";
3
+ import { IPermissionPolicy, IPolicyCheck } from "../types";
4
+ /**
5
+ * Validate privilege policy
6
+ * @param policy
7
+ * @param context
8
+ * @param entity
9
+ * @returns
10
+ */
11
+ export declare function checkPrivileges(policy: IPermissionPolicy, context: IArcGISContext, entity?: HubEntity): IPolicyCheck[];
@@ -0,0 +1,7 @@
1
+ import { PolicyResponse } from "../types";
2
+ /**
3
+ * Get a code that can be used for i18n or other purposes, based on the PolicyResponse
4
+ * @param response
5
+ * @returns
6
+ */
7
+ export declare function getPolicyResponseCode(response: PolicyResponse): string;
@@ -0,0 +1,11 @@
1
+ import { IArcGISContext } from "../ArcGISContext";
2
+ import { HubEntity } from "../core";
3
+ import { IAccessResponse, Permission } from "./types";
4
+ /**
5
+ * Check a permission against the system policies, and possibly an entity policy
6
+ * @param permission
7
+ * @param context
8
+ * @param entity
9
+ * @returns
10
+ */
11
+ export declare function checkPermission(permission: Permission, context: IArcGISContext, entity?: HubEntity): IAccessResponse;
@@ -0,0 +1,4 @@
1
+ export * from "./HubPermissionPolicies";
2
+ export * from "./checkPermission";
3
+ export * from "./utils";
4
+ export * from "./types";
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Defines the values for hub license types
3
+ */
4
+ export declare type HubLicense = "hub-basic" | "hub-premium" | "enterprise-sites";
@@ -0,0 +1,29 @@
1
+ import { Permission } from "./Permission";
2
+ import { IPolicyCheck } from "./IPolicyCheck";
3
+ import { PolicyResponse } from "./PolicyResponse";
4
+ /**
5
+ * Response from a permission check
6
+ */
7
+ export interface IAccessResponse {
8
+ /**
9
+ * Permission being checked
10
+ */
11
+ permission: Permission;
12
+ /**
13
+ * Is the user allowed to perform the action
14
+ */
15
+ access: boolean;
16
+ /**
17
+ * Code for the access response. Used for i18n and UX level messages
18
+ */
19
+ code: string;
20
+ /**
21
+ * Reason for the access response
22
+ */
23
+ response: PolicyResponse;
24
+ /**
25
+ * List of all the policies that were checked, and their responses
26
+ * For debugging / observability
27
+ */
28
+ checks: IPolicyCheck[];
29
+ }
@@ -0,0 +1,22 @@
1
+ import { Permission } from "./Permission";
2
+ /**
3
+ * Association of a Permission with a set of collaborators
4
+ */
5
+ export interface IEntityPermissionPolicy {
6
+ /**
7
+ * Permission being granted
8
+ */
9
+ permission: Permission;
10
+ /**
11
+ * Type of the collaboration - org, group, group-admin or user
12
+ */
13
+ collaborationType: CollaborationType;
14
+ /**
15
+ * Id of the collaboration set
16
+ */
17
+ collaborationId: string;
18
+ }
19
+ /**
20
+ * Type of collaboration set. Used when associating a permission with a set of collaborators
21
+ */
22
+ export declare type CollaborationType = "user" | "group" | "group-admin" | "org";
@@ -0,0 +1,48 @@
1
+ import { HubLicense } from "./HubLicense";
2
+ import { HubSubsystem } from "../../core/types/ISystemStatus";
3
+ import { Permission } from "./Permission";
4
+ import { PlatformPrivilege } from "./PlatformPrivilege";
5
+ /**
6
+ * Defines a system level policy for a specific permission.
7
+ * All conditions must be met for the permission to be granted. Additinonal conditions may be added by an entity to further
8
+ * limit access when the permission is checed in the contex to the entity.
9
+ * e.g. "hub:project:create" in the context of an Initiative, may further restrict to members of a specfic group
10
+ */
11
+ export interface IPermissionPolicy {
12
+ /**
13
+ * Permission being defined
14
+ */
15
+ permission: Permission;
16
+ /**
17
+ * What subsystems are required to be online for this permission to be granted
18
+ */
19
+ subsystems: HubSubsystem[];
20
+ /**
21
+ * Must the user authenticated?
22
+ */
23
+ authenticated: boolean;
24
+ /**
25
+ * What licenses are required for this permission to be granted.
26
+ * This is checking the licese of the current user's org. It is not transitive to the entity being accessed.
27
+ * e.g. If a user is in a Partner "hub-basic" org, they can not create "premium" entities (e.g. Projects)
28
+ */
29
+ licenses: HubLicense[];
30
+ /**
31
+ * Any platform level privileges required for this permission to be granted
32
+ * e.g. "portal:user:createItem"
33
+ */
34
+ privileges?: PlatformPrivilege[];
35
+ /**
36
+ * Does the user need to be in a specific platform role to be granted this permission?
37
+ * This is likely extremely rare.
38
+ */
39
+ roles?: string[];
40
+ /**
41
+ * Does the user require edit access to the entity to be granted this permission?
42
+ */
43
+ entityEdit?: boolean;
44
+ /**
45
+ * Does the user need to be the owner of the entity to be granted this permission?
46
+ */
47
+ entityOwner?: boolean;
48
+ }
@@ -0,0 +1,25 @@
1
+ import { PolicyResponse } from "./PolicyResponse";
2
+ /**
3
+ * Information about a specific policy check, and its response
4
+ * Used for debugging / observability
5
+ */
6
+ export interface IPolicyCheck {
7
+ /**
8
+ * Description of the policy being checked
9
+ * e.g. License Required: "hub-premium"
10
+ */
11
+ name: string;
12
+ /**
13
+ * Value determined for the current user
14
+ * e.g. "hub-basic"
15
+ */
16
+ value: string;
17
+ /**
18
+ * Policy Response code, for i18n
19
+ */
20
+ code: string;
21
+ /**
22
+ * Policy Response string
23
+ */
24
+ response: PolicyResponse;
25
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Defines the values for Permissions
3
+ * Note: This needs to be managed as a single list or typechecking does not work
4
+ * We use an array so we can check for valid permissions
5
+ */
6
+ declare const validPermissions: readonly ["hub:site:create", "hub:site:delete", "hub:site:edit", "hub:site:view", "hub:project:create", "hub:project:delete", "hub:project:edit", "hub:project:view"];
7
+ /**
8
+ * Defines the possible values for Permissions
9
+ */
10
+ export declare type Permission = typeof validPermissions[number];
11
+ /**
12
+ * Validate a Permission
13
+ * @param permission
14
+ * @returns
15
+ */
16
+ export declare function isPermission(maybePermission: string): boolean;
17
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type that defines Platform Privileges
3
+ * TODO: Ensure this is a complete list
4
+ */
5
+ export declare type PlatformPrivilege = "opendata:user:designateGroup" | "opendata:user:openDataAdmin" | "portal:admin:assignToGroups" | "portal:admin:categorizeItems" | "portal:admin:changeUserRoles" | "portal:admin:createGPWebhook" | "portal:admin:createUpdateCapableGroup" | "portal:admin:deleteGroups" | "portal:admin:deleteItems" | "portal:admin:deleteUsers" | "portal:admin:disableUsers" | "portal:admin:inviteUsers" | "portal:admin:manageCollaborations" | "portal:admin:manageCredits" | "portal:admin:manageEnterpriseGroups" | "portal:admin:manageLicenses" | "portal:admin:manageRoles" | "portal:admin:manageSecurity" | "portal:admin:manageServers" | "portal:admin:manageUtilityServices" | "portal:admin:manageWebhooks" | "portal:admin:manageWebsite" | "portal:admin:reassignGroups" | "portal:admin:reassignItems" | "portal:admin:reassignUsers" | "portal:admin:shareToGroup" | "portal:admin:shareToOrg" | "portal:admin:shareToPublic" | "portal:admin:updateGroups" | "portal:admin:updateItemCategorySchema" | "portal:admin:updateItems" | "portal:admin:updateMemberCategorySchema" | "portal:admin:updateUsers" | "portal:admin:viewGroups" | "portal:admin:viewItems" | "portal:admin:viewUsers" | "portal:publisher:bulkPublishFromDataStores" | "portal:publisher:createFeatureWebhook" | "portal:publisher:publishBigDataAnalytics" | "portal:publisher:publishDynamicImagery" | "portal:publisher:publishFeatures" | "portal:publisher:publishFeeds" | "portal:publisher:publishKnowledgeGraph" | "portal:publisher:publishRealTimeAnalytics" | "portal:publisher:publishScenes" | "portal:publisher:publishServerGPServices" | "portal:publisher:publishServerServices" | "portal:publisher:publishTiledImagery" | "portal:publisher:publishTiles" | "portal:publisher:registerDataStores" | "portal:user:addExternalMembersToGroup" | "portal:user:categorizeItems" | "portal:user:createGroup" | "portal:user:createItem" | "portal:user:invitePartneredCollaborationMembers" | "portal:user:joinGroup" | "portal:user:joinNonOrgGroup" | "portal:user:reassignItems" | "portal:user:receiveItems" | "portal:user:runWebTool" | "portal:user:shareGroupToOrg" | "portal:user:shareGroupToPublic" | "portal:user:shareToGroup" | "portal:user:shareToOrg" | "portal:user:shareToPublic" | "portal:user:viewHostedFeatureServices" | "portal:user:viewHostedTileServices" | "portal:user:viewOrgGroups" | "portal:user:viewOrgItems" | "portal:user:viewOrgUsers" | "portal:user:viewTracks";
@@ -0,0 +1,4 @@
1
+ /**`
2
+ * Human readable response from a policy check
3
+ */
4
+ export declare type PolicyResponse = "granted" | "org-member" | "not-org-member" | "group-member" | "not-group-member" | "not-group-admin" | "is-user" | "not-owner" | "not-licensed" | "not-licensed-available" | "not-available" | "not-granted" | "no-edit-access" | "invalid-permission" | "privilege-required" | "system-offline" | "system-maintenance" | "entity-required" | "not-authenticated";
@@ -0,0 +1,8 @@
1
+ export * from "./HubLicense";
2
+ export * from "./IAccessResponse";
3
+ export * from "./IEntityPermissionPolicy";
4
+ export * from "./IPermissionPolicy";
5
+ export * from "./IPolicyCheck";
6
+ export * from "./Permission";
7
+ export * from "./PlatformPrivilege";
8
+ export * from "./PolicyResponse";
@@ -0,0 +1,18 @@
1
+ import { IEntityPermissionPolicy, Permission } from "./types";
2
+ /**
3
+ * Add a policy to an array of entity policies
4
+ * Returns a new array
5
+ * @param permissions
6
+ * @param policy
7
+ * @returns
8
+ */
9
+ export declare function addPermissionPolicy(permissions: IEntityPermissionPolicy[], policy: IEntityPermissionPolicy): IEntityPermissionPolicy[];
10
+ /**
11
+ * Remove a policy from an array of entity policies
12
+ * Returns a new array
13
+ * @param permissions
14
+ * @param permission
15
+ * @param id
16
+ * @returns
17
+ */
18
+ export declare function removePermissionPolicy(permissions: IEntityPermissionPolicy[], permission: Permission, id: string): IEntityPermissionPolicy[];
@@ -1,4 +1,4 @@
1
- import { IHubProject, IWithPermissionBehavior, IWithCatalogBehavior, PermissionManager, IWithStoreBehavior, IWithSharingBehavior, UiSchemaElementOptions } from "../core";
1
+ import { IHubProject, IWithPermissionBehavior, IWithCatalogBehavior, IWithStoreBehavior, IWithSharingBehavior, UiSchemaElementOptions } from "../core";
2
2
  import { Catalog } from "../search/Catalog";
3
3
  import { IArcGISContext } from "../ArcGISContext";
4
4
  import { HubItemEntity } from "../core/HubItemEntity";
@@ -8,7 +8,6 @@ import { EditorConfigType, IEditorConfig } from "../core/behaviors/IWithEditorBe
8
8
  */
9
9
  export declare class HubProject extends HubItemEntity<IHubProject> implements IWithStoreBehavior<IHubProject>, IWithPermissionBehavior, IWithCatalogBehavior, IWithSharingBehavior {
10
10
  private _catalog;
11
- private _permissionManager;
12
11
  /**
13
12
  * Private constructor so we don't have `new` all over the place. Allows for
14
13
  * more flexibility in how we create the HubProjectManager over time.
@@ -20,11 +19,6 @@ export declare class HubProject extends HubItemEntity<IHubProject> implements IW
20
19
  * @returns
21
20
  */
22
21
  get catalog(): Catalog;
23
- /**
24
- * PermissionManager instance for this project. Note: Do not hold direct references to this object; always access it from the project.
25
- * @returns
26
- */
27
- get permissions(): PermissionManager;
28
22
  /**
29
23
  * Create an instance from an IHubProject object
30
24
  * @param json - JSON object to create a HubProject from
@@ -0,0 +1,7 @@
1
+ import { IPermissionPolicy } from "../../permissions/types";
2
+ /**
3
+ * Project Permission Policies
4
+ * These define the requirements any user must meet to perform related actions
5
+ * @private
6
+ */
7
+ export declare const ProjectPermissionPolicies: IPermissionPolicy[];
@@ -1,4 +1,4 @@
1
- import { IHubSite, IWithPermissionBehavior, IWithCatalogBehavior, PermissionManager, IWithStoreBehavior, IWithSharingBehavior } from "../core";
1
+ import { IHubSite, IWithPermissionBehavior, IWithCatalogBehavior, IWithStoreBehavior, IWithSharingBehavior } from "../core";
2
2
  import { Catalog } from "../search/Catalog";
3
3
  import { IArcGISContext } from "../ArcGISContext";
4
4
  import { HubItemEntity } from "../core/HubItemEntity";
@@ -9,7 +9,6 @@ import { IContainsResponse, IDeepCatalogInfo } from "../search";
9
9
  */
10
10
  export declare class HubSite extends HubItemEntity<IHubSite> implements IWithStoreBehavior<IHubSite>, IWithPermissionBehavior, IWithCatalogBehavior, IWithSharingBehavior {
11
11
  private _catalog;
12
- private _permissionManager;
13
12
  private _catalogCache;
14
13
  /**
15
14
  * Private constructor so we don't have `new` all over the place. Allows for
@@ -22,11 +21,6 @@ export declare class HubSite extends HubItemEntity<IHubSite> implements IWithSto
22
21
  * @returns
23
22
  */
24
23
  get catalog(): Catalog;
25
- /**
26
- * PermissionManager instance for this site. Note: Do not hold direct references to this object; always access it from the site.
27
- * @returns
28
- */
29
- get permissions(): PermissionManager;
30
24
  /**
31
25
  * Create an instance from an IHubSite object
32
26
  * @param json - JSON object to create a HubSite from
@@ -0,0 +1,6 @@
1
+ import { IPermissionPolicy } from "../../permissions/types";
2
+ /**
3
+ * Site permission policies
4
+ * @private
5
+ */
6
+ export declare const SitesPermissionPolicies: IPermissionPolicy[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esri/hub-common",
3
- "version": "11.23.2",
3
+ "version": "12.0.0-alpha.1",
4
4
  "description": "Common TypeScript types and utility functions for @esri/hub.js.",
5
5
  "main": "dist/node/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -1,60 +0,0 @@
1
- import { cloneObject, createId } from "../util";
2
- import { checkPermission, getPermissions, addPermission, removePermission, } from "./behaviors/IWithPermissionBehavior";
3
- /**
4
- * Permission Manager class that provides permission behavior for a given entity
5
- */
6
- export class PermissionManager {
7
- constructor(permissions, context) {
8
- this._permissions = permissions;
9
- this._context = context;
10
- }
11
- /**
12
- * Create a new PermissionManager instance from configuration and context
13
- * @param permissions
14
- * @param context
15
- * @returns
16
- */
17
- static fromJson(permissions, context) {
18
- return new PermissionManager(permissions, context);
19
- }
20
- /**
21
- * Check if the user has a specific permission in the context of an entity
22
- * @param permission
23
- */
24
- check(permission) {
25
- return checkPermission(permission, this._context.currentUser, this._permissions);
26
- }
27
- /**
28
- * Get all the permission definitions for the specific permission
29
- * @param key permission to check for
30
- */
31
- get(permission) {
32
- return getPermissions(permission, this._permissions);
33
- }
34
- /**
35
- * Set a permission for the given entity
36
- * @param permission
37
- */
38
- add(permission) {
39
- if (!permission.id) {
40
- permission.id = createId("p");
41
- }
42
- this._permissions = addPermission(permission, this._permissions);
43
- }
44
- /**
45
- * Remove a permission by targetId
46
- * @param permission
47
- * @param targetId
48
- */
49
- remove(permission, targetId) {
50
- this._permissions = removePermission(permission, targetId, this._permissions);
51
- }
52
- /**
53
- * Return the current permissions as a JSON object
54
- * @returns {IHubPermission[]}
55
- */
56
- toJson() {
57
- return cloneObject(this._permissions);
58
- }
59
- }
60
- //# sourceMappingURL=PermissionManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PermissionManager.js","sourceRoot":"","sources":["../../../src/core/PermissionManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,MAAM,qCAAqC,CAAC;AAG7C;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAI5B,YAAoB,WAA6B,EAAE,OAAuB;QACxE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CACb,WAA6B,EAC7B,OAAuB;QAEvB,OAAO,IAAI,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAyB;QAC7B,OAAO,eAAe,CACpB,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,WAAW,EACzB,IAAI,CAAC,YAAY,CAClB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,UAAyB;QAC3B,OAAO,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,UAA0B;QAC5B,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;YAClB,UAAU,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAyB,EAAE,QAAgB;QAChD,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAClC,UAAU,EACV,QAAQ,EACR,IAAI,CAAC,YAAY,CAClB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;CACF"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=IHubPermission.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IHubPermission.js","sourceRoot":"","sources":["../../../../src/core/types/IHubPermission.ts"],"names":[],"mappings":""}
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PermissionManager = void 0;
4
- const util_1 = require("../util");
5
- const IWithPermissionBehavior_1 = require("./behaviors/IWithPermissionBehavior");
6
- /**
7
- * Permission Manager class that provides permission behavior for a given entity
8
- */
9
- class PermissionManager {
10
- constructor(permissions, context) {
11
- this._permissions = permissions;
12
- this._context = context;
13
- }
14
- /**
15
- * Create a new PermissionManager instance from configuration and context
16
- * @param permissions
17
- * @param context
18
- * @returns
19
- */
20
- static fromJson(permissions, context) {
21
- return new PermissionManager(permissions, context);
22
- }
23
- /**
24
- * Check if the user has a specific permission in the context of an entity
25
- * @param permission
26
- */
27
- check(permission) {
28
- return IWithPermissionBehavior_1.checkPermission(permission, this._context.currentUser, this._permissions);
29
- }
30
- /**
31
- * Get all the permission definitions for the specific permission
32
- * @param key permission to check for
33
- */
34
- get(permission) {
35
- return IWithPermissionBehavior_1.getPermissions(permission, this._permissions);
36
- }
37
- /**
38
- * Set a permission for the given entity
39
- * @param permission
40
- */
41
- add(permission) {
42
- if (!permission.id) {
43
- permission.id = util_1.createId("p");
44
- }
45
- this._permissions = IWithPermissionBehavior_1.addPermission(permission, this._permissions);
46
- }
47
- /**
48
- * Remove a permission by targetId
49
- * @param permission
50
- * @param targetId
51
- */
52
- remove(permission, targetId) {
53
- this._permissions = IWithPermissionBehavior_1.removePermission(permission, targetId, this._permissions);
54
- }
55
- /**
56
- * Return the current permissions as a JSON object
57
- * @returns {IHubPermission[]}
58
- */
59
- toJson() {
60
- return util_1.cloneObject(this._permissions);
61
- }
62
- }
63
- exports.PermissionManager = PermissionManager;
64
- //# sourceMappingURL=PermissionManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PermissionManager.js","sourceRoot":"","sources":["../../../src/core/PermissionManager.ts"],"names":[],"mappings":";;;AACA,kCAAgD;AAChD,iFAK6C;AAG7C;;GAEG;AACH,MAAa,iBAAiB;IAI5B,YAAoB,WAA6B,EAAE,OAAuB;QACxE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CACb,WAA6B,EAC7B,OAAuB;QAEvB,OAAO,IAAI,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAyB;QAC7B,OAAO,yCAAe,CACpB,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,WAAW,EACzB,IAAI,CAAC,YAAY,CAClB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,UAAyB;QAC3B,OAAO,wCAAc,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,UAA0B;QAC5B,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;YAClB,UAAU,CAAC,EAAE,GAAG,eAAQ,CAAC,GAAG,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,YAAY,GAAG,uCAAa,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAyB,EAAE,QAAgB;QAChD,IAAI,CAAC,YAAY,GAAG,0CAAgB,CAClC,UAAU,EACV,QAAQ,EACR,IAAI,CAAC,YAAY,CAClB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,kBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;CACF;AAzED,8CAyEC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IHubPermission.js","sourceRoot":"","sources":["../../../../src/core/types/IHubPermission.ts"],"names":[],"mappings":""}
@@ -1,43 +0,0 @@
1
- import { IArcGISContext } from "../ArcGISContext";
2
- import { HubPermission, IHubPermission } from "./types/IHubPermission";
3
- /**
4
- * Permission Manager class that provides permission behavior for a given entity
5
- */
6
- export declare class PermissionManager {
7
- private _permissions;
8
- private _context;
9
- private constructor();
10
- /**
11
- * Create a new PermissionManager instance from configuration and context
12
- * @param permissions
13
- * @param context
14
- * @returns
15
- */
16
- static fromJson(permissions: IHubPermission[], context: IArcGISContext): PermissionManager;
17
- /**
18
- * Check if the user has a specific permission in the context of an entity
19
- * @param permission
20
- */
21
- check(permission: HubPermission): boolean;
22
- /**
23
- * Get all the permission definitions for the specific permission
24
- * @param key permission to check for
25
- */
26
- get(permission: HubPermission): IHubPermission[];
27
- /**
28
- * Set a permission for the given entity
29
- * @param permission
30
- */
31
- add(permission: IHubPermission): void;
32
- /**
33
- * Remove a permission by targetId
34
- * @param permission
35
- * @param targetId
36
- */
37
- remove(permission: HubPermission, targetId: string): void;
38
- /**
39
- * Return the current permissions as a JSON object
40
- * @returns {IHubPermission[]}
41
- */
42
- toJson(): IHubPermission[];
43
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * Structure of a Hub Permission
3
- */
4
- export interface IHubPermission {
5
- /**
6
- * Unique identifier of the permission
7
- */
8
- id?: string;
9
- /**
10
- * What action is being enabled for the target
11
- */
12
- permission: HubPermission;
13
- /**
14
- * What is the target of the permission
15
- */
16
- target: PermissionTarget;
17
- /**
18
- * Id of the entity that this permission is granted for
19
- */
20
- targetId: string;
21
- }
22
- export declare type HubPermission = "addEvent" | "createEvent" | "editEvent" | "deleteEvent" | "addInitiative" | "createInitiative" | "editInitiative" | "deleteInitiative" | "addProject" | "createProject" | "editProject" | "deleteProject";
23
- export declare type PermissionTarget = "org" | "group" | "user";