@esri/hub-common 15.37.1 → 15.38.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 (200) hide show
  1. package/dist/esm/discussions/api/channels/channels.js +188 -0
  2. package/dist/esm/discussions/api/channels/channels.js.map +1 -1
  3. package/dist/esm/discussions/api/index.js +8 -2
  4. package/dist/esm/discussions/api/index.js.map +1 -1
  5. package/dist/esm/discussions/api/posts/index.js +2 -0
  6. package/dist/esm/discussions/api/posts/index.js.map +1 -0
  7. package/dist/esm/discussions/api/posts/posts.js +225 -0
  8. package/dist/esm/discussions/api/posts/posts.js.map +1 -0
  9. package/dist/esm/discussions/api/reactions/index.js +2 -0
  10. package/dist/esm/discussions/api/reactions/index.js.map +1 -0
  11. package/dist/esm/discussions/api/reactions/reactions.js +53 -0
  12. package/dist/esm/discussions/api/reactions/reactions.js.map +1 -0
  13. package/dist/esm/discussions/api/utils/channel-permission.js +359 -0
  14. package/dist/esm/discussions/api/utils/channel-permission.js.map +1 -0
  15. package/dist/esm/discussions/api/utils/channels/can-create-channel-v2.js +13 -0
  16. package/dist/esm/discussions/api/utils/channels/can-create-channel-v2.js.map +1 -0
  17. package/dist/esm/discussions/api/utils/channels/can-create-channel.js +54 -0
  18. package/dist/esm/discussions/api/utils/channels/can-create-channel.js.map +1 -0
  19. package/dist/esm/discussions/api/utils/channels/can-delete-channel-v2.js +17 -0
  20. package/dist/esm/discussions/api/utils/channels/can-delete-channel-v2.js.map +1 -0
  21. package/dist/esm/discussions/api/utils/channels/can-delete-channel.js +17 -0
  22. package/dist/esm/discussions/api/utils/channels/can-delete-channel.js.map +1 -0
  23. package/dist/esm/discussions/api/utils/channels/can-edit-channel-v2.js +19 -0
  24. package/dist/esm/discussions/api/utils/channels/can-edit-channel-v2.js.map +1 -0
  25. package/dist/esm/discussions/api/utils/channels/can-edit-channel.js +17 -0
  26. package/dist/esm/discussions/api/utils/channels/can-edit-channel.js.map +1 -0
  27. package/dist/esm/discussions/api/utils/channels/can-modify-channel.js +18 -0
  28. package/dist/esm/discussions/api/utils/channels/can-modify-channel.js.map +1 -0
  29. package/dist/esm/discussions/api/utils/channels/can-post-to-channel.js +57 -0
  30. package/dist/esm/discussions/api/utils/channels/can-post-to-channel.js.map +1 -0
  31. package/dist/esm/discussions/api/utils/channels/can-read-channel-v2.js +18 -0
  32. package/dist/esm/discussions/api/utils/channels/can-read-channel-v2.js.map +1 -0
  33. package/dist/esm/discussions/api/utils/channels/can-read-channel.js +52 -0
  34. package/dist/esm/discussions/api/utils/channels/can-read-channel.js.map +1 -0
  35. package/dist/esm/discussions/api/utils/channels/channel-to-dto-map.js +11 -0
  36. package/dist/esm/discussions/api/utils/channels/channel-to-dto-map.js.map +1 -0
  37. package/dist/esm/discussions/api/utils/channels/index.js +13 -0
  38. package/dist/esm/discussions/api/utils/channels/index.js.map +1 -0
  39. package/dist/esm/discussions/api/utils/channels/is-authorized-to-modify-channel-by-legacy-permissions.js +44 -0
  40. package/dist/esm/discussions/api/utils/channels/is-authorized-to-modify-channel-by-legacy-permissions.js.map +1 -0
  41. package/dist/esm/discussions/api/utils/platform.js +44 -0
  42. package/dist/esm/discussions/api/utils/platform.js.map +1 -0
  43. package/dist/esm/discussions/api/utils/portal-privilege.js +35 -0
  44. package/dist/esm/discussions/api/utils/portal-privilege.js.map +1 -0
  45. package/dist/esm/discussions/api/utils/posts/can-create-post-v2.js +20 -0
  46. package/dist/esm/discussions/api/utils/posts/can-create-post-v2.js.map +1 -0
  47. package/dist/esm/discussions/api/utils/posts/can-create-post.js +52 -0
  48. package/dist/esm/discussions/api/utils/posts/can-create-post.js.map +1 -0
  49. package/dist/esm/discussions/api/utils/posts/can-create-reply-v2.js +19 -0
  50. package/dist/esm/discussions/api/utils/posts/can-create-reply-v2.js.map +1 -0
  51. package/dist/esm/discussions/api/utils/posts/can-create-reply.js +52 -0
  52. package/dist/esm/discussions/api/utils/posts/can-create-reply.js.map +1 -0
  53. package/dist/esm/discussions/api/utils/posts/can-delete-post-v2.js +24 -0
  54. package/dist/esm/discussions/api/utils/posts/can-delete-post-v2.js.map +1 -0
  55. package/dist/esm/discussions/api/utils/posts/can-delete-post.js +28 -0
  56. package/dist/esm/discussions/api/utils/posts/can-delete-post.js.map +1 -0
  57. package/dist/esm/discussions/api/utils/posts/can-edit-post-status-v2.js +16 -0
  58. package/dist/esm/discussions/api/utils/posts/can-edit-post-status-v2.js.map +1 -0
  59. package/dist/esm/discussions/api/utils/posts/can-edit-post-status.js +61 -0
  60. package/dist/esm/discussions/api/utils/posts/can-edit-post-status.js.map +1 -0
  61. package/dist/esm/discussions/api/utils/posts/can-edit-post-v2.js +19 -0
  62. package/dist/esm/discussions/api/utils/posts/can-edit-post-v2.js.map +1 -0
  63. package/dist/esm/discussions/api/utils/posts/can-edit-post.js +62 -0
  64. package/dist/esm/discussions/api/utils/posts/can-edit-post.js.map +1 -0
  65. package/dist/esm/discussions/api/utils/posts/index.js +15 -0
  66. package/dist/esm/discussions/api/utils/posts/index.js.map +1 -0
  67. package/dist/esm/discussions/api/utils/posts/parse-discussion-uri.js +38 -0
  68. package/dist/esm/discussions/api/utils/posts/parse-discussion-uri.js.map +1 -0
  69. package/dist/esm/discussions/api/utils/posts/parse-mentioned-users.js +19 -0
  70. package/dist/esm/discussions/api/utils/posts/parse-mentioned-users.js.map +1 -0
  71. package/dist/esm/discussions/api/utils/reactions/can-create-reaction-v2.js +27 -0
  72. package/dist/esm/discussions/api/utils/reactions/can-create-reaction-v2.js.map +1 -0
  73. package/dist/esm/discussions/api/utils/reactions/can-create-reaction.js +28 -0
  74. package/dist/esm/discussions/api/utils/reactions/can-create-reaction.js.map +1 -0
  75. package/dist/esm/discussions/api/utils/reactions/index.js +3 -0
  76. package/dist/esm/discussions/api/utils/reactions/index.js.map +1 -0
  77. package/dist/esm/discussions/constants.js +1 -0
  78. package/dist/esm/discussions/constants.js.map +1 -1
  79. package/dist/esm/search/Catalog.js +4 -1
  80. package/dist/esm/search/Catalog.js.map +1 -1
  81. package/dist/node/discussions/api/channels/channels.js +205 -1
  82. package/dist/node/discussions/api/channels/channels.js.map +1 -1
  83. package/dist/node/discussions/api/index.js +8 -2
  84. package/dist/node/discussions/api/index.js.map +1 -1
  85. package/dist/node/discussions/api/posts/index.js +5 -0
  86. package/dist/node/discussions/api/posts/index.js.map +1 -0
  87. package/dist/node/discussions/api/posts/posts.js +244 -0
  88. package/dist/node/discussions/api/posts/posts.js.map +1 -0
  89. package/dist/node/discussions/api/reactions/index.js +5 -0
  90. package/dist/node/discussions/api/reactions/index.js.map +1 -0
  91. package/dist/node/discussions/api/reactions/reactions.js +60 -0
  92. package/dist/node/discussions/api/reactions/reactions.js.map +1 -0
  93. package/dist/node/discussions/api/utils/channel-permission.js +363 -0
  94. package/dist/node/discussions/api/utils/channel-permission.js.map +1 -0
  95. package/dist/node/discussions/api/utils/channels/can-create-channel-v2.js +17 -0
  96. package/dist/node/discussions/api/utils/channels/can-create-channel-v2.js.map +1 -0
  97. package/dist/node/discussions/api/utils/channels/can-create-channel.js +58 -0
  98. package/dist/node/discussions/api/utils/channels/can-create-channel.js.map +1 -0
  99. package/dist/node/discussions/api/utils/channels/can-delete-channel-v2.js +21 -0
  100. package/dist/node/discussions/api/utils/channels/can-delete-channel-v2.js.map +1 -0
  101. package/dist/node/discussions/api/utils/channels/can-delete-channel.js +21 -0
  102. package/dist/node/discussions/api/utils/channels/can-delete-channel.js.map +1 -0
  103. package/dist/node/discussions/api/utils/channels/can-edit-channel-v2.js +23 -0
  104. package/dist/node/discussions/api/utils/channels/can-edit-channel-v2.js.map +1 -0
  105. package/dist/node/discussions/api/utils/channels/can-edit-channel.js +21 -0
  106. package/dist/node/discussions/api/utils/channels/can-edit-channel.js.map +1 -0
  107. package/dist/node/discussions/api/utils/channels/can-modify-channel.js +22 -0
  108. package/dist/node/discussions/api/utils/channels/can-modify-channel.js.map +1 -0
  109. package/dist/node/discussions/api/utils/channels/can-post-to-channel.js +61 -0
  110. package/dist/node/discussions/api/utils/channels/can-post-to-channel.js.map +1 -0
  111. package/dist/node/discussions/api/utils/channels/can-read-channel-v2.js +22 -0
  112. package/dist/node/discussions/api/utils/channels/can-read-channel-v2.js.map +1 -0
  113. package/dist/node/discussions/api/utils/channels/can-read-channel.js +57 -0
  114. package/dist/node/discussions/api/utils/channels/can-read-channel.js.map +1 -0
  115. package/dist/node/discussions/api/utils/channels/channel-to-dto-map.js +15 -0
  116. package/dist/node/discussions/api/utils/channels/channel-to-dto-map.js.map +1 -0
  117. package/dist/node/discussions/api/utils/channels/index.js +26 -0
  118. package/dist/node/discussions/api/utils/channels/index.js.map +1 -0
  119. package/dist/node/discussions/api/utils/channels/is-authorized-to-modify-channel-by-legacy-permissions.js +48 -0
  120. package/dist/node/discussions/api/utils/channels/is-authorized-to-modify-channel-by-legacy-permissions.js.map +1 -0
  121. package/dist/node/discussions/api/utils/platform.js +53 -0
  122. package/dist/node/discussions/api/utils/platform.js.map +1 -0
  123. package/dist/node/discussions/api/utils/portal-privilege.js +41 -0
  124. package/dist/node/discussions/api/utils/portal-privilege.js.map +1 -0
  125. package/dist/node/discussions/api/utils/posts/can-create-post-v2.js +24 -0
  126. package/dist/node/discussions/api/utils/posts/can-create-post-v2.js.map +1 -0
  127. package/dist/node/discussions/api/utils/posts/can-create-post.js +56 -0
  128. package/dist/node/discussions/api/utils/posts/can-create-post.js.map +1 -0
  129. package/dist/node/discussions/api/utils/posts/can-create-reply-v2.js +23 -0
  130. package/dist/node/discussions/api/utils/posts/can-create-reply-v2.js.map +1 -0
  131. package/dist/node/discussions/api/utils/posts/can-create-reply.js +56 -0
  132. package/dist/node/discussions/api/utils/posts/can-create-reply.js.map +1 -0
  133. package/dist/node/discussions/api/utils/posts/can-delete-post-v2.js +28 -0
  134. package/dist/node/discussions/api/utils/posts/can-delete-post-v2.js.map +1 -0
  135. package/dist/node/discussions/api/utils/posts/can-delete-post.js +32 -0
  136. package/dist/node/discussions/api/utils/posts/can-delete-post.js.map +1 -0
  137. package/dist/node/discussions/api/utils/posts/can-edit-post-status-v2.js +20 -0
  138. package/dist/node/discussions/api/utils/posts/can-edit-post-status-v2.js.map +1 -0
  139. package/dist/node/discussions/api/utils/posts/can-edit-post-status.js +66 -0
  140. package/dist/node/discussions/api/utils/posts/can-edit-post-status.js.map +1 -0
  141. package/dist/node/discussions/api/utils/posts/can-edit-post-v2.js +23 -0
  142. package/dist/node/discussions/api/utils/posts/can-edit-post-v2.js.map +1 -0
  143. package/dist/node/discussions/api/utils/posts/can-edit-post.js +67 -0
  144. package/dist/node/discussions/api/utils/posts/can-edit-post.js.map +1 -0
  145. package/dist/node/discussions/api/utils/posts/index.js +31 -0
  146. package/dist/node/discussions/api/utils/posts/index.js.map +1 -0
  147. package/dist/node/discussions/api/utils/posts/parse-discussion-uri.js +42 -0
  148. package/dist/node/discussions/api/utils/posts/parse-discussion-uri.js.map +1 -0
  149. package/dist/node/discussions/api/utils/posts/parse-mentioned-users.js +23 -0
  150. package/dist/node/discussions/api/utils/posts/parse-mentioned-users.js.map +1 -0
  151. package/dist/node/discussions/api/utils/reactions/can-create-reaction-v2.js +31 -0
  152. package/dist/node/discussions/api/utils/reactions/can-create-reaction-v2.js.map +1 -0
  153. package/dist/node/discussions/api/utils/reactions/can-create-reaction.js +32 -0
  154. package/dist/node/discussions/api/utils/reactions/can-create-reaction.js.map +1 -0
  155. package/dist/node/discussions/api/utils/reactions/index.js +7 -0
  156. package/dist/node/discussions/api/utils/reactions/index.js.map +1 -0
  157. package/dist/node/discussions/constants.js +2 -1
  158. package/dist/node/discussions/constants.js.map +1 -1
  159. package/dist/node/search/Catalog.js +4 -1
  160. package/dist/node/search/Catalog.js.map +1 -1
  161. package/dist/types/discussions/api/channels/channels.d.ts +140 -1
  162. package/dist/types/discussions/api/index.d.ts +8 -2
  163. package/dist/types/discussions/api/posts/index.d.ts +1 -0
  164. package/dist/types/discussions/api/posts/posts.d.ts +146 -0
  165. package/dist/types/discussions/api/reactions/index.d.ts +1 -0
  166. package/dist/types/discussions/api/reactions/reactions.d.ts +38 -0
  167. package/dist/types/discussions/api/utils/channel-permission.d.ts +39 -0
  168. package/dist/types/discussions/api/utils/channels/can-create-channel-v2.d.ts +10 -0
  169. package/dist/types/discussions/api/utils/channels/can-create-channel.d.ts +11 -0
  170. package/dist/types/discussions/api/utils/channels/can-delete-channel-v2.d.ts +10 -0
  171. package/dist/types/discussions/api/utils/channels/can-delete-channel.d.ts +11 -0
  172. package/dist/types/discussions/api/utils/channels/can-edit-channel-v2.d.ts +11 -0
  173. package/dist/types/discussions/api/utils/channels/can-edit-channel.d.ts +11 -0
  174. package/dist/types/discussions/api/utils/channels/can-modify-channel.d.ts +11 -0
  175. package/dist/types/discussions/api/utils/channels/can-post-to-channel.d.ts +11 -0
  176. package/dist/types/discussions/api/utils/channels/can-read-channel-v2.d.ts +11 -0
  177. package/dist/types/discussions/api/utils/channels/can-read-channel.d.ts +22 -0
  178. package/dist/types/discussions/api/utils/channels/channel-to-dto-map.d.ts +6 -0
  179. package/dist/types/discussions/api/utils/channels/index.d.ts +10 -0
  180. package/dist/types/discussions/api/utils/channels/is-authorized-to-modify-channel-by-legacy-permissions.d.ts +11 -0
  181. package/dist/types/discussions/api/utils/platform.d.ts +26 -0
  182. package/dist/types/discussions/api/utils/portal-privilege.d.ts +17 -0
  183. package/dist/types/discussions/api/utils/posts/can-create-post-v2.d.ts +10 -0
  184. package/dist/types/discussions/api/utils/posts/can-create-post.d.ts +12 -0
  185. package/dist/types/discussions/api/utils/posts/can-create-reply-v2.d.ts +9 -0
  186. package/dist/types/discussions/api/utils/posts/can-create-reply.d.ts +12 -0
  187. package/dist/types/discussions/api/utils/posts/can-delete-post-v2.d.ts +11 -0
  188. package/dist/types/discussions/api/utils/posts/can-delete-post.d.ts +12 -0
  189. package/dist/types/discussions/api/utils/posts/can-edit-post-status-v2.d.ts +9 -0
  190. package/dist/types/discussions/api/utils/posts/can-edit-post-status.d.ts +20 -0
  191. package/dist/types/discussions/api/utils/posts/can-edit-post-v2.d.ts +10 -0
  192. package/dist/types/discussions/api/utils/posts/can-edit-post.d.ts +22 -0
  193. package/dist/types/discussions/api/utils/posts/index.d.ts +12 -0
  194. package/dist/types/discussions/api/utils/posts/parse-discussion-uri.d.ts +9 -0
  195. package/dist/types/discussions/api/utils/posts/parse-mentioned-users.d.ts +6 -0
  196. package/dist/types/discussions/api/utils/reactions/can-create-reaction-v2.d.ts +12 -0
  197. package/dist/types/discussions/api/utils/reactions/can-create-reaction.d.ts +13 -0
  198. package/dist/types/discussions/api/utils/reactions/index.d.ts +2 -0
  199. package/dist/types/discussions/constants.d.ts +1 -0
  200. package/package.json +1 -1
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canPostToChannel = void 0;
4
+ const types_1 = require("../../types");
5
+ const portal_privilege_1 = require("../portal-privilege");
6
+ const constants_1 = require("../../../constants");
7
+ const ALLOWED_GROUP_ROLES = Object.freeze(["owner", "admin", "member"]);
8
+ // NO V2 EQUIVALENT. Use canCreatePostV2 or canCreateReplyV2
9
+ /**
10
+ * Utility to determine if User has privileges to create a post in a channel
11
+ * @deprecated use `canCreatePostV2` or 'canCreateReplyV2` instead
12
+ * @export
13
+ * @param channel
14
+ * @param user
15
+ * @returns {boolean}
16
+ */
17
+ function canPostToChannel(channel, user = {}) {
18
+ const { access, groups, orgs, allowAnonymous } = channel;
19
+ if (portal_privilege_1.hasOrgAdminUpdateRights(user, channel.orgId)) {
20
+ return true;
21
+ }
22
+ return isAuthorizedToPostByLegacyPermissions(user, {
23
+ access,
24
+ groups,
25
+ orgs,
26
+ allowAnonymous,
27
+ });
28
+ }
29
+ exports.canPostToChannel = canPostToChannel;
30
+ function isAuthorizedToPostByLegacyPermissions(user, channelParams) {
31
+ const { username, groups: userGroups, orgId: userOrgId } = user;
32
+ const { allowAnonymous, access, groups, orgs } = channelParams;
33
+ // order is important here
34
+ if (allowAnonymous === true) {
35
+ return true;
36
+ }
37
+ if (!username) {
38
+ return false;
39
+ }
40
+ if (access === types_1.SharingAccess.PUBLIC) {
41
+ return true;
42
+ }
43
+ if (access === types_1.SharingAccess.PRIVATE) {
44
+ return isAuthorizedToPostByLegacyGroup(groups, userGroups);
45
+ }
46
+ if (access === types_1.SharingAccess.ORG) {
47
+ return orgs.includes(userOrgId);
48
+ }
49
+ return false;
50
+ }
51
+ function isAuthorizedToPostByLegacyGroup(channelGroups = [], userGroups = []) {
52
+ return channelGroups.some((channelGroupId) => {
53
+ return userGroups.some((group) => {
54
+ const { id: userGroupId, userMembership: { memberType: userMemberType }, typeKeywords, } = group;
55
+ return (channelGroupId === userGroupId &&
56
+ ALLOWED_GROUP_ROLES.includes(userMemberType) &&
57
+ !typeKeywords.includes(constants_1.CANNOT_DISCUSS));
58
+ });
59
+ });
60
+ }
61
+ //# sourceMappingURL=can-post-to-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can-post-to-channel.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/can-post-to-channel.ts"],"names":[],"mappings":";;;AACA,uCAAwE;AACxE,0DAA8D;AAC9D,kDAAoD;AAEpD,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAOxE,4DAA4D;AAC5D;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAC9B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAEzD,IAAI,0CAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;QAChD,OAAO,IAAI,CAAC;KACb;IAED,OAAO,qCAAqC,CAAC,IAAI,EAAE;QACjD,MAAM;QACN,MAAM;QACN,IAAI;QACJ,cAAc;KACf,CAAC,CAAC;AACL,CAAC;AAhBD,4CAgBC;AAED,SAAS,qCAAqC,CAC5C,IAA8B,EAC9B,aAAwC;IAExC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAChE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;IAE/D,0BAA0B;IAC1B,IAAI,cAAc,KAAK,IAAI,EAAE;QAC3B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,KAAK,CAAC;KACd;IAED,IAAI,MAAM,KAAK,qBAAa,CAAC,MAAM,EAAE;QACnC,OAAO,IAAI,CAAC;KACb;IAED,IAAI,MAAM,KAAK,qBAAa,CAAC,OAAO,EAAE;QACpC,OAAO,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;KAC5D;IAED,IAAI,MAAM,KAAK,qBAAa,CAAC,GAAG,EAAE;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KACjC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,+BAA+B,CACtC,gBAA0B,EAAE,EAC5B,aAAuB,EAAE;IAEzB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,cAAsB,EAAE,EAAE;QACnD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE;YACvC,MAAM,EACJ,EAAE,EAAE,WAAW,EACf,cAAc,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAC9C,YAAY,GACb,GAAG,KAAK,CAAC;YAEV,OAAO,CACL,cAAc,KAAK,WAAW;gBAC9B,mBAAmB,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAC5C,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAAc,CAAC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canReadChannelV2 = void 0;
4
+ const channel_permission_1 = require("../channel-permission");
5
+ const portal_privilege_1 = require("../portal-privilege");
6
+ /**
7
+ * Utility to determine if User can view channel posts and channel attributes
8
+ *
9
+ * @export
10
+ * @param {IChannel} channel
11
+ * @param {IUser} user
12
+ * @return {*} {boolean}
13
+ */
14
+ function canReadChannelV2(channel, user = {}) {
15
+ if (portal_privilege_1.hasOrgAdminViewRights(user, channel.orgId)) {
16
+ return true;
17
+ }
18
+ const channelPermission = new channel_permission_1.ChannelPermission(channel);
19
+ return channelPermission.canReadChannel(user);
20
+ }
21
+ exports.canReadChannelV2 = canReadChannelV2;
22
+ //# sourceMappingURL=can-read-channel-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can-read-channel-v2.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/can-read-channel-v2.ts"],"names":[],"mappings":";;;AAEA,8DAA0D;AAC1D,0DAA4D;AAE5D;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAC9B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,wCAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;QAC9C,OAAO,IAAI,CAAC;KACb;IAED,MAAM,iBAAiB,GAAG,IAAI,sCAAiB,CAAC,OAAO,CAAC,CAAC;IACzD,OAAO,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAVD,4CAUC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canReadFromChannel = exports.canReadChannel = void 0;
4
+ const platform_1 = require("../platform");
5
+ const portal_privilege_1 = require("../portal-privilege");
6
+ /**
7
+ * Utility to determine if User can view channel posts and channel attributes
8
+ *
9
+ * @deprecated replace with canReadChannelV2 for v2 discussions
10
+ * @export
11
+ * @param {IChannel} channel
12
+ * @param {IUser} user
13
+ * @return {*} {boolean}
14
+ */
15
+ function canReadChannel(channel, user = {}) {
16
+ if (portal_privilege_1.hasOrgAdminViewRights(user, channel.orgId)) {
17
+ return true;
18
+ }
19
+ if (channel.access === "private") {
20
+ // ensure user is member of at least one group
21
+ return intersectGroups(["member", "owner", "admin"])(user, channel);
22
+ }
23
+ if (channel.access === "org") {
24
+ return (intersectGroups(["member", "owner", "admin"])(user, channel) ||
25
+ isLegacyChannelOrgMember(channel, user));
26
+ }
27
+ // public channel
28
+ return true;
29
+ }
30
+ exports.canReadChannel = canReadChannel;
31
+ /**
32
+ * Utility (deprecated) to determine whether User can view posts belonging to Channel
33
+ *
34
+ * @export
35
+ * @deprecated replace with canReadChannelV2 for v2 discussions
36
+ * @param {IChannel} channel
37
+ * @param {IUser} user
38
+ * @return {*} {boolean}
39
+ */
40
+ function canReadFromChannel(channel, user = {}) {
41
+ return canReadChannel(channel, user);
42
+ }
43
+ exports.canReadFromChannel = canReadFromChannel;
44
+ function intersectGroups(membershipTypes) {
45
+ return (user, channel) => {
46
+ const { groups: sharedGroups = [] } = channel;
47
+ const { groups: userGroups = [] } = user;
48
+ const eligibleUserGroups = userGroups.reduce(platform_1.reduceByGroupMembership(membershipTypes), []);
49
+ const method = "some";
50
+ return sharedGroups[method]((group) => eligibleUserGroups.indexOf(group) > -1);
51
+ };
52
+ }
53
+ function isLegacyChannelOrgMember(channel, user) {
54
+ // orgs.length = 1 until collaboration/discussion between many orgs is ideated
55
+ return channel.orgs.length === 1 && channel.orgs.indexOf(user.orgId) > -1;
56
+ }
57
+ //# sourceMappingURL=can-read-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can-read-channel.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/can-read-channel.ts"],"names":[],"mappings":";;;AAGA,0CAAsD;AACtD,0DAA4D;AAE5D;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAC5B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,wCAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;QAC9C,OAAO,IAAI,CAAC;KACb;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE;QAChC,8CAA8C;QAC9C,OAAO,eAAe,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACrE;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;QAC5B,OAAO,CACL,eAAe,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC;YAC5D,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,CACxC,CAAC;KACH;IAED,iBAAiB;IACjB,OAAO,IAAI,CAAC;AACd,CAAC;AAtBD,wCAsBC;AAED;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAChC,OAAiB,EACjB,OAAiC,EAAE;IAEnC,OAAO,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AALD,gDAKC;AAED,SAAS,eAAe,CACtB,eAAkC;IAElC,OAAO,CAAC,IAA8B,EAAE,OAAiB,EAAW,EAAE;QACpE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;QAC9C,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;QACzC,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAC1C,kCAAuB,CAAC,eAAe,CAAC,EACxC,EAAE,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,CAAC;QACtB,OAAO,YAAY,CAAC,MAAM,CAAC,CACzB,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAClD,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAAiB,EACjB,IAA8B;IAE9B,8EAA8E;IAC9E,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ // TODO: V2 use IUpdateChannel as param type when hoisted to hub.js from service
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.dtoToChannel = void 0;
5
+ const tslib_1 = require("tslib");
6
+ /**
7
+ * @hidden
8
+ * @internal
9
+ */
10
+ function dtoToChannel(dto) {
11
+ const { channelAclDefinition } = dto, rest = tslib_1.__rest(dto, ["channelAclDefinition"]);
12
+ return Object.assign(Object.assign({}, rest), { channelAcl: channelAclDefinition });
13
+ }
14
+ exports.dtoToChannel = dtoToChannel;
15
+ //# sourceMappingURL=channel-to-dto-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-to-dto-map.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/channel-to-dto-map.ts"],"names":[],"mappings":";AAAA,gFAAgF;;;;AAIhF;;;GAGG;AACH,SAAgB,YAAY,CAAC,GAAQ;IACnC,MAAM,EAAE,oBAAoB,KAAc,GAAG,EAAZ,IAAI,kBAAK,GAAG,EAAvC,wBAAiC,CAAM,CAAC;IAE9C,uCACK,IAAI,KACP,UAAU,EAAE,oBAAoB,IAChC;AACJ,CAAC;AAPD,oCAOC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // V1
4
+ var can_create_channel_1 = require("./can-create-channel");
5
+ Object.defineProperty(exports, "canCreateChannel", { enumerable: true, get: function () { return can_create_channel_1.canCreateChannel; } });
6
+ var can_delete_channel_1 = require("./can-delete-channel");
7
+ Object.defineProperty(exports, "canDeleteChannel", { enumerable: true, get: function () { return can_delete_channel_1.canDeleteChannel; } });
8
+ var can_edit_channel_1 = require("./can-edit-channel");
9
+ Object.defineProperty(exports, "canEditChannel", { enumerable: true, get: function () { return can_edit_channel_1.canEditChannel; } });
10
+ var can_modify_channel_1 = require("./can-modify-channel");
11
+ Object.defineProperty(exports, "canModifyChannel", { enumerable: true, get: function () { return can_modify_channel_1.canModifyChannel; } });
12
+ var can_post_to_channel_1 = require("./can-post-to-channel");
13
+ Object.defineProperty(exports, "canPostToChannel", { enumerable: true, get: function () { return can_post_to_channel_1.canPostToChannel; } });
14
+ var can_read_channel_1 = require("./can-read-channel");
15
+ Object.defineProperty(exports, "canReadChannel", { enumerable: true, get: function () { return can_read_channel_1.canReadChannel; } });
16
+ Object.defineProperty(exports, "canReadFromChannel", { enumerable: true, get: function () { return can_read_channel_1.canReadFromChannel; } });
17
+ // V2
18
+ var can_create_channel_v2_1 = require("./can-create-channel-v2");
19
+ Object.defineProperty(exports, "canCreateChannelV2", { enumerable: true, get: function () { return can_create_channel_v2_1.canCreateChannelV2; } });
20
+ var can_delete_channel_v2_1 = require("./can-delete-channel-v2");
21
+ Object.defineProperty(exports, "canDeleteChannelV2", { enumerable: true, get: function () { return can_delete_channel_v2_1.canDeleteChannelV2; } });
22
+ var can_edit_channel_v2_1 = require("./can-edit-channel-v2");
23
+ Object.defineProperty(exports, "canEditChannelV2", { enumerable: true, get: function () { return can_edit_channel_v2_1.canEditChannelV2; } });
24
+ var can_read_channel_v2_1 = require("./can-read-channel-v2");
25
+ Object.defineProperty(exports, "canReadChannelV2", { enumerable: true, get: function () { return can_read_channel_v2_1.canReadChannelV2; } });
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/index.ts"],"names":[],"mappings":";;AAAA,KAAK;AACL,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,uDAAoD;AAA3C,kHAAA,cAAc,OAAA;AACvB,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,6DAAyD;AAAhD,uHAAA,gBAAgB,OAAA;AACzB,uDAAwE;AAA/D,kHAAA,cAAc,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAE3C,KAAK;AACL,iEAA6D;AAApD,2HAAA,kBAAkB,OAAA;AAC3B,iEAA6D;AAApD,2HAAA,kBAAkB,OAAA;AAC3B,6DAAyD;AAAhD,uHAAA,gBAAgB,OAAA;AACzB,6DAAyD;AAAhD,uHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAuthorizedToModifyChannelByLegacyPermissions = void 0;
4
+ const platform_1 = require("../platform");
5
+ const types_1 = require("../../types");
6
+ const AGO_ADMIN_GROUP_ROLES = Object.freeze(["owner", "admin"]);
7
+ /**
8
+ * Utility to determine if User has privileges to modify a channel by legacy channel permissions
9
+ * @param channel
10
+ * @param user
11
+ * @returns {boolean}
12
+ * @internal
13
+ * @hidden
14
+ */
15
+ function isAuthorizedToModifyChannelByLegacyPermissions(user = {}, channel) {
16
+ const { username, groups: userGroups = [] } = user;
17
+ const { access, groups: channelGroups = [], orgs: channelOrgs = [], creator: channelCreator, } = channel;
18
+ // ensure authenticated
19
+ if (!username) {
20
+ return false;
21
+ }
22
+ if (username === channelCreator) {
23
+ return true;
24
+ }
25
+ if (access === types_1.SharingAccess.PRIVATE) {
26
+ return isAuthorizedToModifyChannelByLegacyGroup(channelGroups, userGroups);
27
+ }
28
+ // public or org access
29
+ return (isAuthorizedToModifyChannelByLegacyGroup(channelGroups, userGroups) ||
30
+ isLegacyChannelOrgAdmin(channelOrgs, user));
31
+ }
32
+ exports.isAuthorizedToModifyChannelByLegacyPermissions = isAuthorizedToModifyChannelByLegacyPermissions;
33
+ /**
34
+ * Ensure the user is an owner/admin of one of the channel groups
35
+ */
36
+ function isAuthorizedToModifyChannelByLegacyGroup(channelGroups, userGroups) {
37
+ return channelGroups.some((channelGroupId) => {
38
+ return userGroups.some((group) => {
39
+ const { id: userGroupId, userMembership: { memberType: userMemberType }, } = group;
40
+ return (channelGroupId === userGroupId &&
41
+ AGO_ADMIN_GROUP_ROLES.includes(userMemberType));
42
+ });
43
+ });
44
+ }
45
+ function isLegacyChannelOrgAdmin(channelOrgs, user) {
46
+ return platform_1.isOrgAdmin(user) && channelOrgs.includes(user.orgId);
47
+ }
48
+ //# sourceMappingURL=is-authorized-to-modify-channel-by-legacy-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-authorized-to-modify-channel-by-legacy-permissions.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/is-authorized-to-modify-channel-by-legacy-permissions.ts"],"names":[],"mappings":";;;AACA,0CAAyC;AACzC,uCAAwE;AAExE,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhE;;;;;;;GAOG;AACH,SAAgB,8CAA8C,CAC5D,OAAiC,EAAE,EACnC,OAAiB;IAEjB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IACnD,MAAM,EACJ,MAAM,EACN,MAAM,EAAE,aAAa,GAAG,EAAE,EAC1B,IAAI,EAAE,WAAW,GAAG,EAAE,EACtB,OAAO,EAAE,cAAc,GACxB,GAAG,OAAO,CAAC;IAEZ,uBAAuB;IACvB,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,KAAK,CAAC;KACd;IAED,IAAI,QAAQ,KAAK,cAAc,EAAE;QAC/B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,MAAM,KAAK,qBAAa,CAAC,OAAO,EAAE;QACpC,OAAO,wCAAwC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;KAC5E;IAED,uBAAuB;IACvB,OAAO,CACL,wCAAwC,CAAC,aAAa,EAAE,UAAU,CAAC;QACnE,uBAAuB,CAAC,WAAW,EAAE,IAAI,CAAC,CAC3C,CAAC;AACJ,CAAC;AA9BD,wGA8BC;AAED;;GAEG;AACH,SAAS,wCAAwC,CAC/C,aAAuB,EACvB,UAAoB;IAEpB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,cAAsB,EAAE,EAAE;QACnD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE;YACvC,MAAM,EACJ,EAAE,EAAE,WAAW,EACf,cAAc,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,GAC/C,GAAG,KAAK,CAAC;YAEV,OAAO,CACL,cAAc,KAAK,WAAW;gBAC9B,qBAAqB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAC9B,WAAqB,EACrB,IAA8B;IAE9B,OAAO,qBAAU,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.userHasPrivileges = exports.userHasPrivilege = exports.isOrgAdminInOrg = exports.isUserInOrg = exports.isOrgAdmin = exports.reduceByGroupMembership = void 0;
4
+ /**
5
+ * Utility that returns reducer function that filters a user's groups
6
+ * by membership type and produces an array of group id's
7
+ *
8
+ *
9
+ * @export
10
+ * @param {GroupMembership[]} membershipTypes
11
+ * @return {*} {((memo: string[], group: IGroup) => string[])}
12
+ */
13
+ function reduceByGroupMembership(membershipTypes) {
14
+ return function (memo, group) {
15
+ if (membershipTypes.indexOf(group.userMembership.memberType) > -1) {
16
+ memo.push(group.id);
17
+ }
18
+ return memo;
19
+ };
20
+ }
21
+ exports.reduceByGroupMembership = reduceByGroupMembership;
22
+ /**
23
+ * Utility that checks if a user is a portal org admin, or an org_admin by a platform role
24
+ *
25
+ * @export
26
+ * @param {IUser} user
27
+ * @return {*} {boolean}
28
+ */
29
+ // NOTE: this is not the same as @esri/arcgis-rest-portal isOrgAdmin,
30
+ // which first resolves `user` from `IUserRequestOptions` to make this determination
31
+ // https://github.com/Esri/arcgis-rest-js/blob/7ab072184f89dcb35367518101ee4abeb5a9d112/packages/arcgis-rest-portal/src/sharing/helpers.ts#L45
32
+ function isOrgAdmin(user) {
33
+ return user.role === "org_admin";
34
+ }
35
+ exports.isOrgAdmin = isOrgAdmin;
36
+ function isUserInOrg(user = {}, orgId) {
37
+ return user.orgId === orgId;
38
+ }
39
+ exports.isUserInOrg = isUserInOrg;
40
+ function isOrgAdminInOrg(user, orgId) {
41
+ return isOrgAdmin(user) && isUserInOrg(user, orgId);
42
+ }
43
+ exports.isOrgAdminInOrg = isOrgAdminInOrg;
44
+ function userHasPrivilege(user = {}, privilege) {
45
+ var _a;
46
+ return !!((_a = user.privileges) === null || _a === void 0 ? void 0 : _a.includes(privilege));
47
+ }
48
+ exports.userHasPrivilege = userHasPrivilege;
49
+ function userHasPrivileges(user = {}, privileges) {
50
+ return privileges.every((privilege) => userHasPrivilege(user, privilege));
51
+ }
52
+ exports.userHasPrivileges = userHasPrivileges;
53
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../../../src/discussions/api/utils/platform.ts"],"names":[],"mappings":";;;AAeA;;;;;;;;GAQG;AACH,SAAgB,uBAAuB,CACrC,eAAkC;IAElC,OAAO,UAAU,IAAI,EAAE,KAAK;QAC1B,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;YACjE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACrB;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AATD,0DASC;AAED;;;;;;GAMG;AACH,qEAAqE;AACrE,oFAAoF;AACpF,8IAA8I;AAC9I,SAAgB,UAAU,CAAC,IAAW;IACpC,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;AACnC,CAAC;AAFD,gCAEC;AAED,SAAgB,WAAW,CACzB,OAAiC,EAAE,EACnC,KAAa;IAEb,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;AAC9B,CAAC;AALD,kCAKC;AAED,SAAgB,eAAe,CAAC,IAAW,EAAE,KAAa;IACxD,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAFD,0CAEC;AAED,SAAgB,gBAAgB,CAC9B,OAAiC,EAAE,EACnC,SAAoB;;IAEpB,OAAO,CAAC,QAAC,IAAI,CAAC,UAAU,0CAAE,QAAQ,CAAC,SAAS,EAAC,CAAC;AAChD,CAAC;AALD,4CAKC;AAED,SAAgB,iBAAiB,CAC/B,OAAiC,EAAE,EACnC,UAAuB;IAEvB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5E,CAAC;AALD,8CAKC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasOrgAdminDeleteRights = exports.hasOrgAdminUpdateRights = exports.hasOrgAdminViewRights = void 0;
4
+ const platform_1 = require("./platform");
5
+ /**
6
+ * @internal
7
+ * @hidden
8
+ */
9
+ function hasOrgAdminViewRights(user = {}, orgId) {
10
+ return (platform_1.isOrgAdminInOrg(user, orgId) ||
11
+ (platform_1.isUserInOrg(user, orgId) &&
12
+ platform_1.userHasPrivileges(user, ["portal:admin:viewItems"])));
13
+ }
14
+ exports.hasOrgAdminViewRights = hasOrgAdminViewRights;
15
+ /**
16
+ * @internal
17
+ * @hidden
18
+ */
19
+ function hasOrgAdminUpdateRights(user = {}, orgId) {
20
+ return (platform_1.isOrgAdminInOrg(user, orgId) ||
21
+ (platform_1.isUserInOrg(user, orgId) &&
22
+ platform_1.userHasPrivileges(user, [
23
+ "portal:admin:viewItems",
24
+ "portal:admin:updateItems",
25
+ ])));
26
+ }
27
+ exports.hasOrgAdminUpdateRights = hasOrgAdminUpdateRights;
28
+ /**
29
+ * @internal
30
+ * @hidden
31
+ */
32
+ function hasOrgAdminDeleteRights(user = {}, orgId) {
33
+ return (platform_1.isOrgAdminInOrg(user, orgId) ||
34
+ (platform_1.isUserInOrg(user, orgId) &&
35
+ platform_1.userHasPrivileges(user, [
36
+ "portal:admin:viewItems",
37
+ "portal:admin:deleteItems",
38
+ ])));
39
+ }
40
+ exports.hasOrgAdminDeleteRights = hasOrgAdminDeleteRights;
41
+ //# sourceMappingURL=portal-privilege.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal-privilege.js","sourceRoot":"","sources":["../../../../../src/discussions/api/utils/portal-privilege.ts"],"names":[],"mappings":";;;AACA,yCAA6E;AAG7E;;;GAGG;AACH,SAAgB,qBAAqB,CACnC,OAAiC,EAAE,EACnC,KAAa;IAEb,OAAO,CACL,0BAAe,CAAC,IAAI,EAAE,KAAK,CAAC;QAC5B,CAAC,sBAAW,CAAC,IAAI,EAAE,KAAK,CAAC;YACvB,4BAAiB,CAAC,IAAI,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,CACvD,CAAC;AACJ,CAAC;AATD,sDASC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CACrC,OAAiC,EAAE,EACnC,KAAa;IAEb,OAAO,CACL,0BAAe,CAAC,IAAI,EAAE,KAAK,CAAC;QAC5B,CAAC,sBAAW,CAAC,IAAI,EAAE,KAAK,CAAC;YACvB,4BAAiB,CAAC,IAAI,EAAE;gBACtB,wBAAwB;gBACxB,0BAA0B;aAC3B,CAAC,CAAC,CACN,CAAC;AACJ,CAAC;AAZD,0DAYC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CACrC,OAAiC,EAAE,EACnC,KAAa;IAEb,OAAO,CACL,0BAAe,CAAC,IAAI,EAAE,KAAK,CAAC;QAC5B,CAAC,sBAAW,CAAC,IAAI,EAAE,KAAK,CAAC;YACvB,4BAAiB,CAAC,IAAI,EAAE;gBACtB,wBAAwB;gBACxB,0BAA0B;aAC3B,CAAC,CAAC,CACN,CAAC;AACJ,CAAC;AAZD,0DAYC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canCreatePostV2 = void 0;
4
+ const channel_permission_1 = require("../channel-permission");
5
+ const portal_privilege_1 = require("../portal-privilege");
6
+ /**
7
+ * Utility to determine if User has privileges to create a post in a channel
8
+ * @export
9
+ * @param channel
10
+ * @param user
11
+ * @returns {boolean}
12
+ */
13
+ function canCreatePostV2(channel, user = {}) {
14
+ if (portal_privilege_1.hasOrgAdminUpdateRights(user, channel.orgId)) {
15
+ return true;
16
+ }
17
+ if (!channel.allowPost) {
18
+ return false;
19
+ }
20
+ const channelPermission = new channel_permission_1.ChannelPermission(channel);
21
+ return channelPermission.canPostToChannel(user);
22
+ }
23
+ exports.canCreatePostV2 = canCreatePostV2;
24
+ //# sourceMappingURL=can-create-post-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can-create-post-v2.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/posts/can-create-post-v2.ts"],"names":[],"mappings":";;;AAEA,8DAA0D;AAC1D,0DAA8D;AAE9D;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,0CAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;QAChD,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;QACtB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,iBAAiB,GAAG,IAAI,sCAAiB,CAAC,OAAO,CAAC,CAAC;IACzD,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,IAAwB,CAAC,CAAC;AACtE,CAAC;AAdD,0CAcC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canCreatePost = void 0;
4
+ const types_1 = require("../../types");
5
+ const portal_privilege_1 = require("../portal-privilege");
6
+ const constants_1 = require("../../../constants");
7
+ const ALLOWED_GROUP_ROLES = Object.freeze(["owner", "admin", "member"]);
8
+ /**
9
+ * Utility to determine if User has privileges to create a post in a channel
10
+ *
11
+ * @deprecated replace with canCreatePostV2 for v2 discussions
12
+ * @export
13
+ * @param channel
14
+ * @param user
15
+ * @returns {boolean}
16
+ */
17
+ function canCreatePost(channel, user = {}) {
18
+ const { access, groups, orgs } = channel;
19
+ if (portal_privilege_1.hasOrgAdminUpdateRights(user, channel.orgId)) {
20
+ return true;
21
+ }
22
+ return isAuthorizedToPostByLegacyPermissions(user, {
23
+ access,
24
+ groups,
25
+ orgs,
26
+ });
27
+ }
28
+ exports.canCreatePost = canCreatePost;
29
+ function isAuthorizedToPostByLegacyPermissions(user, channelParams) {
30
+ const { username, groups: userGroups, orgId: userOrgId } = user;
31
+ const { access, groups, orgs } = channelParams;
32
+ if (!username) {
33
+ return false;
34
+ }
35
+ if (access === types_1.SharingAccess.PUBLIC) {
36
+ return true;
37
+ }
38
+ if (access === types_1.SharingAccess.PRIVATE) {
39
+ return isAuthorizedToPostByLegacyGroup(groups, userGroups);
40
+ }
41
+ if (access === types_1.SharingAccess.ORG) {
42
+ return orgs.includes(userOrgId);
43
+ }
44
+ return false;
45
+ }
46
+ function isAuthorizedToPostByLegacyGroup(channelGroups = [], userGroups = []) {
47
+ return channelGroups.some((channelGroupId) => {
48
+ return userGroups.some((group) => {
49
+ const { id: userGroupId, userMembership: { memberType: userMemberType }, typeKeywords, } = group;
50
+ return (channelGroupId === userGroupId &&
51
+ ALLOWED_GROUP_ROLES.includes(userMemberType) &&
52
+ !typeKeywords.includes(constants_1.CANNOT_DISCUSS));
53
+ });
54
+ });
55
+ }
56
+ //# sourceMappingURL=can-create-post.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can-create-post.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/posts/can-create-post.ts"],"names":[],"mappings":";;;AACA,uCAAwE;AACxE,0DAA8D;AAC9D,kDAAoD;AAEpD,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAIxE;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAC3B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzC,IAAI,0CAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;QAChD,OAAO,IAAI,CAAC;KACb;IAED,OAAO,qCAAqC,CAAC,IAAI,EAAE;QACjD,MAAM;QACN,MAAM;QACN,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAfD,sCAeC;AAED,SAAS,qCAAqC,CAC5C,IAA8B,EAC9B,aAAwC;IAExC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAChE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;IAE/C,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,KAAK,CAAC;KACd;IAED,IAAI,MAAM,KAAK,qBAAa,CAAC,MAAM,EAAE;QACnC,OAAO,IAAI,CAAC;KACb;IAED,IAAI,MAAM,KAAK,qBAAa,CAAC,OAAO,EAAE;QACpC,OAAO,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;KAC5D;IAED,IAAI,MAAM,KAAK,qBAAa,CAAC,GAAG,EAAE;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KACjC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,+BAA+B,CACtC,gBAA0B,EAAE,EAC5B,aAAuB,EAAE;IAEzB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,cAAsB,EAAE,EAAE;QACnD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE;YACvC,MAAM,EACJ,EAAE,EAAE,WAAW,EACf,cAAc,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAC9C,YAAY,GACb,GAAG,KAAK,CAAC;YAEV,OAAO,CACL,cAAc,KAAK,WAAW;gBAC9B,mBAAmB,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAC5C,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAAc,CAAC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canCreateReplyV2 = void 0;
4
+ const channel_permission_1 = require("../channel-permission");
5
+ const portal_privilege_1 = require("../portal-privilege");
6
+ /**
7
+ * Utility to determine if User has privileges to create a reply in a channel
8
+ * @param channel
9
+ * @param user
10
+ * @returns {boolean}
11
+ */
12
+ function canCreateReplyV2(channel, user = {}) {
13
+ if (portal_privilege_1.hasOrgAdminUpdateRights(user, channel.orgId)) {
14
+ return true;
15
+ }
16
+ if (!channel.allowReply) {
17
+ return false;
18
+ }
19
+ const channelPermission = new channel_permission_1.ChannelPermission(channel);
20
+ return channelPermission.canPostToChannel(user);
21
+ }
22
+ exports.canCreateReplyV2 = canCreateReplyV2;
23
+ //# sourceMappingURL=can-create-reply-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can-create-reply-v2.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/posts/can-create-reply-v2.ts"],"names":[],"mappings":";;;AAEA,8DAA0D;AAC1D,0DAA8D;AAE9D;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC9B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,0CAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;QAChD,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,iBAAiB,GAAG,IAAI,sCAAiB,CAAC,OAAO,CAAC,CAAC;IACzD,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,IAAwB,CAAC,CAAC;AACtE,CAAC;AAdD,4CAcC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canCreateReply = void 0;
4
+ const types_1 = require("../../types");
5
+ const portal_privilege_1 = require("../portal-privilege");
6
+ const constants_1 = require("../../../constants");
7
+ const ALLOWED_GROUP_ROLES = Object.freeze(["owner", "admin", "member"]);
8
+ /**
9
+ * Utility to determine if User has privileges to create a reply in a channel
10
+ *
11
+ * @export
12
+ * @deprecated replace with canCreateReplyV2 for v2 discussions
13
+ * @param channel
14
+ * @param user
15
+ * @returns {boolean}
16
+ */
17
+ function canCreateReply(channel, user = {}) {
18
+ const { access, groups, orgs } = channel;
19
+ if (portal_privilege_1.hasOrgAdminUpdateRights(user, channel.orgId)) {
20
+ return true;
21
+ }
22
+ return isAuthorizedToPostByLegacyPermissions(user, {
23
+ access,
24
+ groups,
25
+ orgs,
26
+ });
27
+ }
28
+ exports.canCreateReply = canCreateReply;
29
+ function isAuthorizedToPostByLegacyPermissions(user, channelParams) {
30
+ const { username, groups: userGroups, orgId: userOrgId } = user;
31
+ const { access, groups, orgs } = channelParams;
32
+ if (!username) {
33
+ return false;
34
+ }
35
+ if (access === types_1.SharingAccess.PUBLIC) {
36
+ return true;
37
+ }
38
+ if (access === types_1.SharingAccess.PRIVATE) {
39
+ return isAuthorizedToPostByLegacyGroup(groups, userGroups);
40
+ }
41
+ if (access === types_1.SharingAccess.ORG) {
42
+ return orgs.includes(userOrgId);
43
+ }
44
+ return false;
45
+ }
46
+ function isAuthorizedToPostByLegacyGroup(channelGroups = [], userGroups = []) {
47
+ return channelGroups.some((channelGroupId) => {
48
+ return userGroups.some((group) => {
49
+ const { id: userGroupId, userMembership: { memberType: userMemberType }, typeKeywords, } = group;
50
+ return (channelGroupId === userGroupId &&
51
+ ALLOWED_GROUP_ROLES.includes(userMemberType) &&
52
+ !typeKeywords.includes(constants_1.CANNOT_DISCUSS));
53
+ });
54
+ });
55
+ }
56
+ //# sourceMappingURL=can-create-reply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can-create-reply.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/posts/can-create-reply.ts"],"names":[],"mappings":";;;AACA,uCAAwE;AACxE,0DAA8D;AAC9D,kDAAoD;AAEpD,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAIxE;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAC5B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzC,IAAI,0CAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;QAChD,OAAO,IAAI,CAAC;KACb;IAED,OAAO,qCAAqC,CAAC,IAAI,EAAE;QACjD,MAAM;QACN,MAAM;QACN,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAfD,wCAeC;AAED,SAAS,qCAAqC,CAC5C,IAA8B,EAC9B,aAAwC;IAExC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAChE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;IAE/C,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,KAAK,CAAC;KACd;IAED,IAAI,MAAM,KAAK,qBAAa,CAAC,MAAM,EAAE;QACnC,OAAO,IAAI,CAAC;KACb;IAED,IAAI,MAAM,KAAK,qBAAa,CAAC,OAAO,EAAE;QACpC,OAAO,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;KAC5D;IAED,IAAI,MAAM,KAAK,qBAAa,CAAC,GAAG,EAAE;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KACjC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,+BAA+B,CACtC,gBAA0B,EAAE,EAC5B,aAAuB,EAAE;IAEzB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,cAAsB,EAAE,EAAE;QACnD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE;YACvC,MAAM,EACJ,EAAE,EAAE,WAAW,EACf,cAAc,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAC9C,YAAY,GACb,GAAG,KAAK,CAAC;YAEV,OAAO,CACL,cAAc,KAAK,WAAW;gBAC9B,mBAAmB,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAC5C,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAAc,CAAC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canDeletePostV2 = void 0;
4
+ const channel_permission_1 = require("../channel-permission");
5
+ const portal_privilege_1 = require("../portal-privilege");
6
+ /**
7
+ * Utility to determine if User has privileges to delete a post
8
+ * @export
9
+ * @param post
10
+ * @param user
11
+ * @param channel
12
+ * @returns {boolean}
13
+ */
14
+ function canDeletePostV2(post, channel, user = {}) {
15
+ return isPostCreator(post, user) || isChannelModerator(channel, user);
16
+ }
17
+ exports.canDeletePostV2 = canDeletePostV2;
18
+ function isPostCreator(post, user) {
19
+ return !!user.username && post.creator === user.username;
20
+ }
21
+ function isChannelModerator(channel, user) {
22
+ if (portal_privilege_1.hasOrgAdminUpdateRights(user, channel.orgId)) {
23
+ return true;
24
+ }
25
+ const channelPermission = new channel_permission_1.ChannelPermission(channel);
26
+ return channelPermission.canModerateChannel(user);
27
+ }
28
+ //# sourceMappingURL=can-delete-post-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can-delete-post-v2.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/posts/can-delete-post-v2.ts"],"names":[],"mappings":";;;AAEA,8DAA0D;AAC1D,0DAA8D;AAE9D;;;;;;;GAOG;AACH,SAAgB,eAAe,CAC7B,IAAW,EACX,OAAiB,EACjB,OAAiC,EAAE;IAEnC,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxE,CAAC;AAND,0CAMC;AAED,SAAS,aAAa,CAAC,IAAW,EAAE,IAA8B;IAChE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC;AAC3D,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAiB,EACjB,IAA8B;IAE9B,IAAI,0CAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;QAChD,OAAO,IAAI,CAAC;KACb;IAED,MAAM,iBAAiB,GAAG,IAAI,sCAAiB,CAAC,OAAO,CAAC,CAAC;IACzD,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canDeletePost = void 0;
4
+ const channel_permission_1 = require("../channel-permission");
5
+ const portal_privilege_1 = require("../portal-privilege");
6
+ /**
7
+ * Utility to determine if User has privileges to delete a post
8
+ * @deprecated replace with canDeletePostV2 for v2 discussions
9
+ * @export
10
+ * @param post
11
+ * @param user
12
+ * @param channel
13
+ * @returns {boolean}
14
+ */
15
+ function canDeletePost(post, channel, user = {}) {
16
+ return isPostCreator(post, user) || isChannelModerator(channel, user);
17
+ }
18
+ exports.canDeletePost = canDeletePost;
19
+ function isPostCreator(post, user) {
20
+ return !!user.username && post.creator === user.username;
21
+ }
22
+ function isChannelModerator(channel, user) {
23
+ if (portal_privilege_1.hasOrgAdminUpdateRights(user, channel.orgId)) {
24
+ return true;
25
+ }
26
+ if (!channel.channelAcl) {
27
+ return false;
28
+ }
29
+ const channelPermission = new channel_permission_1.ChannelPermission(channel);
30
+ return channelPermission.canModerateChannel(user);
31
+ }
32
+ //# sourceMappingURL=can-delete-post.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can-delete-post.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/posts/can-delete-post.ts"],"names":[],"mappings":";;;AAEA,8DAA0D;AAC1D,0DAA8D;AAE9D;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAC3B,IAAW,EACX,OAAiB,EACjB,OAAiC,EAAE;IAEnC,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxE,CAAC;AAND,sCAMC;AAED,SAAS,aAAa,CAAC,IAAW,EAAE,IAA8B;IAChE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC;AAC3D,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAiB,EACjB,IAA8B;IAE9B,IAAI,0CAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;QAChD,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,iBAAiB,GAAG,IAAI,sCAAiB,CAAC,OAAO,CAAC,CAAC;IACzD,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canEditPostStatusV2 = void 0;
4
+ const channel_permission_1 = require("../channel-permission");
5
+ const portal_privilege_1 = require("../portal-privilege");
6
+ /**
7
+ * Utility to determine if User has privileges to modify the status of a post
8
+ * @param channel
9
+ * @param user
10
+ * @returns {boolean}
11
+ */
12
+ function canEditPostStatusV2(channel, user = {}) {
13
+ if (portal_privilege_1.hasOrgAdminUpdateRights(user, channel.orgId)) {
14
+ return true;
15
+ }
16
+ const channelPermission = new channel_permission_1.ChannelPermission(channel);
17
+ return channelPermission.canModerateChannel(user);
18
+ }
19
+ exports.canEditPostStatusV2 = canEditPostStatusV2;
20
+ //# sourceMappingURL=can-edit-post-status-v2.js.map