@esri/hub-common 20.26.0 → 21.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/esm/discussions/api/channels/channels.js +1 -113
  2. package/dist/esm/discussions/api/channels/channels.js.map +1 -1
  3. package/dist/esm/discussions/api/discussions-api-request.js +0 -18
  4. package/dist/esm/discussions/api/discussions-api-request.js.map +1 -1
  5. package/dist/esm/discussions/api/posts/posts.js +1 -117
  6. package/dist/esm/discussions/api/posts/posts.js.map +1 -1
  7. package/dist/esm/discussions/api/reactions/reactions.js +1 -29
  8. package/dist/esm/discussions/api/reactions/reactions.js.map +1 -1
  9. package/dist/esm/discussions/api/settings/settings.js +1 -52
  10. package/dist/esm/discussions/api/settings/settings.js.map +1 -1
  11. package/dist/esm/discussions/api/utils/channel-permission.js.map +1 -1
  12. package/dist/esm/discussions/utils.js +18 -31
  13. package/dist/esm/discussions/utils.js.map +1 -1
  14. package/dist/esm/events/api/orval/api/orval-events.js.map +1 -1
  15. package/dist/esm/index.js +5 -17
  16. package/dist/esm/index.js.map +1 -1
  17. package/dist/esm/search/_internal/hubEventsHelpers/processFilters.js +40 -21
  18. package/dist/esm/search/_internal/hubEventsHelpers/processFilters.js.map +1 -1
  19. package/dist/esm/search/_internal/hubSearchEvents.js +4 -1
  20. package/dist/esm/search/_internal/hubSearchEvents.js.map +1 -1
  21. package/dist/node/discussions/api/channels/channels.js +0 -121
  22. package/dist/node/discussions/api/channels/channels.js.map +1 -1
  23. package/dist/node/discussions/api/discussions-api-request.js +0 -19
  24. package/dist/node/discussions/api/discussions-api-request.js.map +1 -1
  25. package/dist/node/discussions/api/posts/posts.js +0 -124
  26. package/dist/node/discussions/api/posts/posts.js.map +1 -1
  27. package/dist/node/discussions/api/reactions/reactions.js +0 -30
  28. package/dist/node/discussions/api/reactions/reactions.js.map +1 -1
  29. package/dist/node/discussions/api/settings/settings.js +0 -55
  30. package/dist/node/discussions/api/settings/settings.js.map +1 -1
  31. package/dist/node/discussions/api/utils/channel-permission.js.map +1 -1
  32. package/dist/node/discussions/utils.js +18 -31
  33. package/dist/node/discussions/utils.js.map +1 -1
  34. package/dist/node/events/api/orval/api/orval-events.js.map +1 -1
  35. package/dist/node/index.js +12 -63
  36. package/dist/node/index.js.map +1 -1
  37. package/dist/node/search/_internal/hubEventsHelpers/processFilters.js +40 -21
  38. package/dist/node/search/_internal/hubEventsHelpers/processFilters.js.map +1 -1
  39. package/dist/node/search/_internal/hubSearchEvents.js +4 -1
  40. package/dist/node/search/_internal/hubSearchEvents.js.map +1 -1
  41. package/dist/types/discussions/api/channels/channels.d.ts +1 -86
  42. package/dist/types/discussions/api/discussions-api-request.d.ts +0 -10
  43. package/dist/types/discussions/api/posts/posts.d.ts +1 -79
  44. package/dist/types/discussions/api/reactions/reactions.d.ts +0 -21
  45. package/dist/types/discussions/api/settings/settings.d.ts +0 -39
  46. package/dist/types/discussions/api/types.d.ts +1 -117
  47. package/dist/types/discussions/utils.d.ts +5 -9
  48. package/dist/types/events/api/orval/api/orval-events.d.ts +10 -1
  49. package/dist/types/index.d.ts +6 -18
  50. package/dist/types/search/_internal/hubSearchEvents.d.ts +4 -1
  51. package/package.json +2 -2
  52. package/dist/esm/discussions/api/utils/channels/can-create-channel.js +0 -54
  53. package/dist/esm/discussions/api/utils/channels/can-create-channel.js.map +0 -1
  54. package/dist/esm/discussions/api/utils/channels/can-delete-channel.js +0 -17
  55. package/dist/esm/discussions/api/utils/channels/can-delete-channel.js.map +0 -1
  56. package/dist/esm/discussions/api/utils/channels/can-edit-channel.js +0 -17
  57. package/dist/esm/discussions/api/utils/channels/can-edit-channel.js.map +0 -1
  58. package/dist/esm/discussions/api/utils/channels/can-modify-channel.js +0 -18
  59. package/dist/esm/discussions/api/utils/channels/can-modify-channel.js.map +0 -1
  60. package/dist/esm/discussions/api/utils/channels/can-post-to-channel.js +0 -57
  61. package/dist/esm/discussions/api/utils/channels/can-post-to-channel.js.map +0 -1
  62. package/dist/esm/discussions/api/utils/channels/can-read-channel.js +0 -52
  63. package/dist/esm/discussions/api/utils/channels/can-read-channel.js.map +0 -1
  64. package/dist/esm/discussions/api/utils/channels/is-authorized-to-modify-channel-by-legacy-permissions.js +0 -44
  65. package/dist/esm/discussions/api/utils/channels/is-authorized-to-modify-channel-by-legacy-permissions.js.map +0 -1
  66. package/dist/esm/discussions/api/utils/posts/can-create-post.js +0 -52
  67. package/dist/esm/discussions/api/utils/posts/can-create-post.js.map +0 -1
  68. package/dist/esm/discussions/api/utils/posts/can-create-reply.js +0 -52
  69. package/dist/esm/discussions/api/utils/posts/can-create-reply.js.map +0 -1
  70. package/dist/esm/discussions/api/utils/posts/can-delete-post.js +0 -28
  71. package/dist/esm/discussions/api/utils/posts/can-delete-post.js.map +0 -1
  72. package/dist/esm/discussions/api/utils/posts/can-edit-post-status.js +0 -61
  73. package/dist/esm/discussions/api/utils/posts/can-edit-post-status.js.map +0 -1
  74. package/dist/esm/discussions/api/utils/posts/can-edit-post.js +0 -62
  75. package/dist/esm/discussions/api/utils/posts/can-edit-post.js.map +0 -1
  76. package/dist/esm/discussions/api/utils/reactions/can-create-reaction.js +0 -28
  77. package/dist/esm/discussions/api/utils/reactions/can-create-reaction.js.map +0 -1
  78. package/dist/node/discussions/api/utils/channels/can-create-channel.js +0 -57
  79. package/dist/node/discussions/api/utils/channels/can-create-channel.js.map +0 -1
  80. package/dist/node/discussions/api/utils/channels/can-delete-channel.js +0 -20
  81. package/dist/node/discussions/api/utils/channels/can-delete-channel.js.map +0 -1
  82. package/dist/node/discussions/api/utils/channels/can-edit-channel.js +0 -20
  83. package/dist/node/discussions/api/utils/channels/can-edit-channel.js.map +0 -1
  84. package/dist/node/discussions/api/utils/channels/can-modify-channel.js +0 -21
  85. package/dist/node/discussions/api/utils/channels/can-modify-channel.js.map +0 -1
  86. package/dist/node/discussions/api/utils/channels/can-post-to-channel.js +0 -60
  87. package/dist/node/discussions/api/utils/channels/can-post-to-channel.js.map +0 -1
  88. package/dist/node/discussions/api/utils/channels/can-read-channel.js +0 -56
  89. package/dist/node/discussions/api/utils/channels/can-read-channel.js.map +0 -1
  90. package/dist/node/discussions/api/utils/channels/is-authorized-to-modify-channel-by-legacy-permissions.js +0 -47
  91. package/dist/node/discussions/api/utils/channels/is-authorized-to-modify-channel-by-legacy-permissions.js.map +0 -1
  92. package/dist/node/discussions/api/utils/posts/can-create-post.js +0 -55
  93. package/dist/node/discussions/api/utils/posts/can-create-post.js.map +0 -1
  94. package/dist/node/discussions/api/utils/posts/can-create-reply.js +0 -55
  95. package/dist/node/discussions/api/utils/posts/can-create-reply.js.map +0 -1
  96. package/dist/node/discussions/api/utils/posts/can-delete-post.js +0 -31
  97. package/dist/node/discussions/api/utils/posts/can-delete-post.js.map +0 -1
  98. package/dist/node/discussions/api/utils/posts/can-edit-post-status.js +0 -65
  99. package/dist/node/discussions/api/utils/posts/can-edit-post-status.js.map +0 -1
  100. package/dist/node/discussions/api/utils/posts/can-edit-post.js +0 -66
  101. package/dist/node/discussions/api/utils/posts/can-edit-post.js.map +0 -1
  102. package/dist/node/discussions/api/utils/reactions/can-create-reaction.js +0 -31
  103. package/dist/node/discussions/api/utils/reactions/can-create-reaction.js.map +0 -1
  104. package/dist/types/discussions/api/utils/channels/can-create-channel.d.ts +0 -11
  105. package/dist/types/discussions/api/utils/channels/can-delete-channel.d.ts +0 -11
  106. package/dist/types/discussions/api/utils/channels/can-edit-channel.d.ts +0 -11
  107. package/dist/types/discussions/api/utils/channels/can-modify-channel.d.ts +0 -11
  108. package/dist/types/discussions/api/utils/channels/can-post-to-channel.d.ts +0 -11
  109. package/dist/types/discussions/api/utils/channels/can-read-channel.d.ts +0 -22
  110. package/dist/types/discussions/api/utils/channels/is-authorized-to-modify-channel-by-legacy-permissions.d.ts +0 -11
  111. package/dist/types/discussions/api/utils/posts/can-create-post.d.ts +0 -12
  112. package/dist/types/discussions/api/utils/posts/can-create-reply.d.ts +0 -12
  113. package/dist/types/discussions/api/utils/posts/can-delete-post.d.ts +0 -12
  114. package/dist/types/discussions/api/utils/posts/can-edit-post-status.d.ts +0 -20
  115. package/dist/types/discussions/api/utils/posts/can-edit-post.d.ts +0 -22
  116. package/dist/types/discussions/api/utils/reactions/can-create-reaction.d.ts +0 -14
@@ -1,17 +0,0 @@
1
- import { isAuthorizedToModifyChannelByLegacyPermissions } from "./is-authorized-to-modify-channel-by-legacy-permissions";
2
- import { hasOrgAdminDeleteRights } from "../portal-privilege";
3
- /**
4
- * Utility to determine if User has privileges to delete a channel
5
- * @deprecated replace with canDeleteChannelV2 for v2 discussions
6
- * @export
7
- * @param channel
8
- * @param user
9
- * @returns {boolean}
10
- */
11
- export function canDeleteChannel(channel, user = {}) {
12
- if (hasOrgAdminDeleteRights(user, channel.orgId)) {
13
- return true;
14
- }
15
- return isAuthorizedToModifyChannelByLegacyPermissions(user, channel);
16
- }
17
- //# sourceMappingURL=can-delete-channel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-delete-channel.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/can-delete-channel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8CAA8C,EAAE,MAAM,yDAAyD,CAAC;AACzH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,8CAA8C,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC"}
@@ -1,17 +0,0 @@
1
- import { isAuthorizedToModifyChannelByLegacyPermissions } from "./is-authorized-to-modify-channel-by-legacy-permissions";
2
- import { hasOrgAdminUpdateRights } from "../portal-privilege";
3
- /**
4
- * Utility to determine if User has privileges to edit a channel
5
- * @export
6
- * @deprecated replace with canEditChannelV2 for v2 discussions
7
- * @param channel
8
- * @param user
9
- * @returns {boolean}
10
- */
11
- export function canEditChannel(channel, user = {}) {
12
- if (hasOrgAdminUpdateRights(user, channel.orgId)) {
13
- return true;
14
- }
15
- return isAuthorizedToModifyChannelByLegacyPermissions(user, channel);
16
- }
17
- //# sourceMappingURL=can-edit-channel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-edit-channel.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/can-edit-channel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8CAA8C,EAAE,MAAM,yDAAyD,CAAC;AACzH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,8CAA8C,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC"}
@@ -1,18 +0,0 @@
1
- import { isOrgAdminInOrg } from "../platform";
2
- import { isAuthorizedToModifyChannelByLegacyPermissions } from "./is-authorized-to-modify-channel-by-legacy-permissions";
3
- // NO V2 EQUIVALENT. Use canEditChannelV2 or canDeleteChannelV2
4
- /**
5
- * Utility to determine if User has privileges to modify a channel
6
- * @deprecated use `canEditChannelV2` or `canDeleteChannelV2` instead.
7
- * @export
8
- * @param channel
9
- * @param user
10
- * @returns {boolean}
11
- */
12
- export function canModifyChannel(channel, user = {}) {
13
- if (isOrgAdminInOrg(user, channel.orgId)) {
14
- return true;
15
- }
16
- return isAuthorizedToModifyChannelByLegacyPermissions(user, channel);
17
- }
18
- //# sourceMappingURL=can-modify-channel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-modify-channel.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/can-modify-channel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,8CAA8C,EAAE,MAAM,yDAAyD,CAAC;AAEzH,+DAA+D;AAC/D;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,8CAA8C,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC"}
@@ -1,57 +0,0 @@
1
- import { SharingAccess } from "../../enums/sharingAccess";
2
- import { hasOrgAdminUpdateRights } from "../portal-privilege";
3
- import { CANNOT_DISCUSS } from "../../../constants";
4
- const ALLOWED_GROUP_ROLES = Object.freeze(["owner", "admin", "member"]);
5
- // NO V2 EQUIVALENT. Use canCreatePostV2 or canCreateReplyV2
6
- /**
7
- * Utility to determine if User has privileges to create a post in a channel
8
- * @deprecated use `canCreatePostV2` or 'canCreateReplyV2` instead
9
- * @export
10
- * @param channel
11
- * @param user
12
- * @returns {boolean}
13
- */
14
- export function canPostToChannel(channel, user = {}) {
15
- const { access, groups, orgs, allowAnonymous } = channel;
16
- if (hasOrgAdminUpdateRights(user, channel.orgId)) {
17
- return true;
18
- }
19
- return isAuthorizedToPostByLegacyPermissions(user, {
20
- access,
21
- groups,
22
- orgs,
23
- allowAnonymous,
24
- });
25
- }
26
- function isAuthorizedToPostByLegacyPermissions(user, channelParams) {
27
- const { username, groups: userGroups, orgId: userOrgId } = user;
28
- const { allowAnonymous, access, groups, orgs } = channelParams;
29
- // order is important here
30
- if (allowAnonymous === true) {
31
- return true;
32
- }
33
- if (!username) {
34
- return false;
35
- }
36
- if (access === SharingAccess.PUBLIC) {
37
- return true;
38
- }
39
- if (access === SharingAccess.PRIVATE) {
40
- return isAuthorizedToPostByLegacyGroup(groups, userGroups);
41
- }
42
- if (access === SharingAccess.ORG) {
43
- return orgs.includes(userOrgId);
44
- }
45
- return false;
46
- }
47
- function isAuthorizedToPostByLegacyGroup(channelGroups = [], userGroups = []) {
48
- return channelGroups.some((channelGroupId) => {
49
- return userGroups.some((group) => {
50
- const { id: userGroupId, userMembership: { memberType: userMemberType }, typeKeywords, } = group;
51
- return (channelGroupId === userGroupId &&
52
- ALLOWED_GROUP_ROLES.includes(userMemberType) &&
53
- !typeKeywords.includes(CANNOT_DISCUSS));
54
- });
55
- });
56
- }
57
- //# sourceMappingURL=can-post-to-channel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-post-to-channel.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/can-post-to-channel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAOxE,4DAA4D;AAC5D;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAEzD,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,qCAAqC,CAAC,IAAI,EAAE;QACjD,MAAM;QACN,MAAM;QACN,IAAI;QACJ,cAAc;KACf,CAAC,CAAC;AACL,CAAC;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,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;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,cAAc,CAAC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,52 +0,0 @@
1
- import { reduceByGroupMembership } from "../platform";
2
- import { hasOrgAdminViewRights } from "../portal-privilege";
3
- /**
4
- * Utility to determine if User can view channel posts and channel attributes
5
- *
6
- * @deprecated replace with canReadChannelV2 for v2 discussions
7
- * @export
8
- * @param {IChannel} channel
9
- * @param {IUser} user
10
- * @return {*} {boolean}
11
- */
12
- export function canReadChannel(channel, user = {}) {
13
- if (hasOrgAdminViewRights(user, channel.orgId)) {
14
- return true;
15
- }
16
- if (channel.access === "private") {
17
- // ensure user is member of at least one group
18
- return intersectGroups(["member", "owner", "admin"])(user, channel);
19
- }
20
- if (channel.access === "org") {
21
- return (intersectGroups(["member", "owner", "admin"])(user, channel) ||
22
- isLegacyChannelOrgMember(channel, user));
23
- }
24
- // public channel
25
- return true;
26
- }
27
- /**
28
- * Utility (deprecated) to determine whether User can view posts belonging to Channel
29
- *
30
- * @export
31
- * @deprecated replace with canReadChannelV2 for v2 discussions
32
- * @param {IChannel} channel
33
- * @param {IUser} user
34
- * @return {*} {boolean}
35
- */
36
- export function canReadFromChannel(channel, user = {}) {
37
- return canReadChannel(channel, user);
38
- }
39
- function intersectGroups(membershipTypes) {
40
- return (user, channel) => {
41
- const { groups: sharedGroups = [] } = channel;
42
- const { groups: userGroups = [] } = user;
43
- const eligibleUserGroups = userGroups.reduce(reduceByGroupMembership(membershipTypes), []);
44
- const method = "some";
45
- return sharedGroups[method]((group) => eligibleUserGroups.indexOf(group) > -1);
46
- };
47
- }
48
- function isLegacyChannelOrgMember(channel, user) {
49
- // orgs.length = 1 until collaboration/discussion between many orgs is ideated
50
- return channel.orgs.length === 1 && channel.orgs.indexOf(user.orgId) > -1;
51
- }
52
- //# sourceMappingURL=can-read-channel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-read-channel.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/can-read-channel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,8CAA8C;QAC9C,OAAO,eAAe,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7B,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;IACJ,CAAC;IAED,iBAAiB;IACjB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAiB,EACjB,OAAiC,EAAE;IAEnC,OAAO,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;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,uBAAuB,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"}
@@ -1,44 +0,0 @@
1
- import { isOrgAdmin } from "../platform";
2
- import { SharingAccess } from "../../enums/sharingAccess";
3
- const AGO_ADMIN_GROUP_ROLES = Object.freeze(["owner", "admin"]);
4
- /**
5
- * Utility to determine if User has privileges to modify a channel by legacy channel permissions
6
- * @param channel
7
- * @param user
8
- * @returns {boolean}
9
- * @internal
10
- * @hidden
11
- */
12
- export function isAuthorizedToModifyChannelByLegacyPermissions(user = {}, channel) {
13
- const { username, groups: userGroups = [] } = user;
14
- const { access, groups: channelGroups = [], orgs: channelOrgs = [], creator: channelCreator, } = channel;
15
- // ensure authenticated
16
- if (!username) {
17
- return false;
18
- }
19
- if (username === channelCreator) {
20
- return true;
21
- }
22
- if (access === SharingAccess.PRIVATE) {
23
- return isAuthorizedToModifyChannelByLegacyGroup(channelGroups, userGroups);
24
- }
25
- // public or org access
26
- return (isAuthorizedToModifyChannelByLegacyGroup(channelGroups, userGroups) ||
27
- isLegacyChannelOrgAdmin(channelOrgs, user));
28
- }
29
- /**
30
- * Ensure the user is an owner/admin of one of the channel groups
31
- */
32
- function isAuthorizedToModifyChannelByLegacyGroup(channelGroups, userGroups) {
33
- return channelGroups.some((channelGroupId) => {
34
- return userGroups.some((group) => {
35
- const { id: userGroupId, userMembership: { memberType: userMemberType }, } = group;
36
- return (channelGroupId === userGroupId &&
37
- AGO_ADMIN_GROUP_ROLES.includes(userMemberType));
38
- });
39
- });
40
- }
41
- function isLegacyChannelOrgAdmin(channelOrgs, user) {
42
- return isOrgAdmin(user) && channelOrgs.includes(user.orgId);
43
- }
44
- //# sourceMappingURL=is-authorized-to-modify-channel-by-legacy-permissions.js.map
@@ -1 +0,0 @@
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,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,UAAU,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,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,wCAAwC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC7E,CAAC;IAED,uBAAuB;IACvB,OAAO,CACL,wCAAwC,CAAC,aAAa,EAAE,UAAU,CAAC;QACnE,uBAAuB,CAAC,WAAW,EAAE,IAAI,CAAC,CAC3C,CAAC;AACJ,CAAC;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,UAAU,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,52 +0,0 @@
1
- import { SharingAccess } from "../../enums/sharingAccess";
2
- import { hasOrgAdminUpdateRights } from "../portal-privilege";
3
- import { CANNOT_DISCUSS } from "../../../constants";
4
- const ALLOWED_GROUP_ROLES = Object.freeze(["owner", "admin", "member"]);
5
- /**
6
- * Utility to determine if User has privileges to create a post in a channel
7
- *
8
- * @deprecated replace with canCreatePostV2 for v2 discussions
9
- * @export
10
- * @param channel
11
- * @param user
12
- * @returns {boolean}
13
- */
14
- export function canCreatePost(channel, user = {}) {
15
- const { access, groups, orgs } = channel;
16
- if (hasOrgAdminUpdateRights(user, channel.orgId)) {
17
- return true;
18
- }
19
- return isAuthorizedToPostByLegacyPermissions(user, {
20
- access,
21
- groups,
22
- orgs,
23
- });
24
- }
25
- function isAuthorizedToPostByLegacyPermissions(user, channelParams) {
26
- const { username, groups: userGroups, orgId: userOrgId } = user;
27
- const { access, groups, orgs } = channelParams;
28
- if (!username) {
29
- return false;
30
- }
31
- if (access === SharingAccess.PUBLIC) {
32
- return true;
33
- }
34
- if (access === SharingAccess.PRIVATE) {
35
- return isAuthorizedToPostByLegacyGroup(groups, userGroups);
36
- }
37
- if (access === SharingAccess.ORG) {
38
- return orgs.includes(userOrgId);
39
- }
40
- return false;
41
- }
42
- function isAuthorizedToPostByLegacyGroup(channelGroups = [], userGroups = []) {
43
- return channelGroups.some((channelGroupId) => {
44
- return userGroups.some((group) => {
45
- const { id: userGroupId, userMembership: { memberType: userMemberType }, typeKeywords, } = group;
46
- return (channelGroupId === userGroupId &&
47
- ALLOWED_GROUP_ROLES.includes(userMemberType) &&
48
- !typeKeywords.includes(CANNOT_DISCUSS));
49
- });
50
- });
51
- }
52
- //# sourceMappingURL=can-create-post.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-create-post.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/posts/can-create-post.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAIxE;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzC,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,qCAAqC,CAAC,IAAI,EAAE;QACjD,MAAM;QACN,MAAM;QACN,IAAI;KACL,CAAC,CAAC;AACL,CAAC;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,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;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,cAAc,CAAC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,52 +0,0 @@
1
- import { SharingAccess } from "../../enums/sharingAccess";
2
- import { hasOrgAdminUpdateRights } from "../portal-privilege";
3
- import { CANNOT_DISCUSS } from "../../../constants";
4
- const ALLOWED_GROUP_ROLES = Object.freeze(["owner", "admin", "member"]);
5
- /**
6
- * Utility to determine if User has privileges to create a reply in a channel
7
- *
8
- * @export
9
- * @deprecated replace with canCreateReplyV2 for v2 discussions
10
- * @param channel
11
- * @param user
12
- * @returns {boolean}
13
- */
14
- export function canCreateReply(channel, user = {}) {
15
- const { access, groups, orgs } = channel;
16
- if (hasOrgAdminUpdateRights(user, channel.orgId)) {
17
- return true;
18
- }
19
- return isAuthorizedToPostByLegacyPermissions(user, {
20
- access,
21
- groups,
22
- orgs,
23
- });
24
- }
25
- function isAuthorizedToPostByLegacyPermissions(user, channelParams) {
26
- const { username, groups: userGroups, orgId: userOrgId } = user;
27
- const { access, groups, orgs } = channelParams;
28
- if (!username) {
29
- return false;
30
- }
31
- if (access === SharingAccess.PUBLIC) {
32
- return true;
33
- }
34
- if (access === SharingAccess.PRIVATE) {
35
- return isAuthorizedToPostByLegacyGroup(groups, userGroups);
36
- }
37
- if (access === SharingAccess.ORG) {
38
- return orgs.includes(userOrgId);
39
- }
40
- return false;
41
- }
42
- function isAuthorizedToPostByLegacyGroup(channelGroups = [], userGroups = []) {
43
- return channelGroups.some((channelGroupId) => {
44
- return userGroups.some((group) => {
45
- const { id: userGroupId, userMembership: { memberType: userMemberType }, typeKeywords, } = group;
46
- return (channelGroupId === userGroupId &&
47
- ALLOWED_GROUP_ROLES.includes(userMemberType) &&
48
- !typeKeywords.includes(CANNOT_DISCUSS));
49
- });
50
- });
51
- }
52
- //# sourceMappingURL=can-create-reply.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-create-reply.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/posts/can-create-reply.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAIxE;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzC,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,qCAAqC,CAAC,IAAI,EAAE;QACjD,MAAM;QACN,MAAM;QACN,IAAI;KACL,CAAC,CAAC;AACL,CAAC;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,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;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,cAAc,CAAC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,28 +0,0 @@
1
- import { ChannelPermission } from "../channel-permission";
2
- import { hasOrgAdminUpdateRights } from "../portal-privilege";
3
- /**
4
- * Utility to determine if User has privileges to delete a post
5
- * @deprecated replace with canDeletePostV2 for v2 discussions
6
- * @export
7
- * @param post
8
- * @param user
9
- * @param channel
10
- * @returns {boolean}
11
- */
12
- export function canDeletePost(post, channel, user = {}) {
13
- return isPostCreator(post, user) || isChannelModerator(channel, user);
14
- }
15
- function isPostCreator(post, user) {
16
- return !!user.username && post.creator === user.username;
17
- }
18
- function isChannelModerator(channel, user) {
19
- if (hasOrgAdminUpdateRights(user, channel.orgId)) {
20
- return true;
21
- }
22
- if (!channel.channelAcl) {
23
- return false;
24
- }
25
- const channelPermission = new ChannelPermission(channel);
26
- return channelPermission.canModerateChannel(user);
27
- }
28
- //# sourceMappingURL=can-delete-post.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-delete-post.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/posts/can-delete-post.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,UAAU,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;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,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACzD,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC"}
@@ -1,61 +0,0 @@
1
- import { SharingAccess } from "../../enums/sharingAccess";
2
- import { isOrgAdmin } from "../platform";
3
- import { hasOrgAdminUpdateRights } from "../portal-privilege";
4
- const ADMIN_GROUP_ROLES = Object.freeze(["owner", "admin"]);
5
- /**
6
- * Utility to determine if User has privileges to modify the status of a post
7
- * @export
8
- * @deprecated replace with canEditPostStatusV2 for v2 discussions
9
- * @param channel
10
- * @param user
11
- * @returns {boolean}
12
- */
13
- export function canModifyPostStatus(channel, user = {}) {
14
- return canEditPostStatus(channel, user);
15
- }
16
- /**
17
- * Utility to determine if User has privileges to modify the status of a post
18
- * @export
19
- * @deprecated replace with canEditPostStatusV2 for v2 discussions
20
- * @param channel
21
- * @param user
22
- * @returns {boolean}
23
- */
24
- export function canEditPostStatus(channel, user = {}) {
25
- if (hasOrgAdminUpdateRights(user, channel.orgId)) {
26
- return true;
27
- }
28
- return isAuthorizedToModifyStatusByLegacyPermissions(user, channel);
29
- }
30
- function isAuthorizedToModifyStatusByLegacyPermissions(user, channel) {
31
- const { username, groups: userGroups = [] } = user;
32
- const { access, groups: channelGroups = [], orgs: channelOrgs = [], creator: channelCreator, } = channel;
33
- if (!username) {
34
- return false;
35
- }
36
- if (channelCreator === username) {
37
- return true;
38
- }
39
- if (access === SharingAccess.PRIVATE) {
40
- return isAuthorizedToModifyStatusByLegacyGroup(channelGroups, userGroups);
41
- }
42
- // public or org access
43
- return (isAuthorizedToModifyStatusByLegacyGroup(channelGroups, userGroups) ||
44
- isLegacyChannelOrgAdmin(channelOrgs, user));
45
- }
46
- /**
47
- * Ensure the user is an owner/admin of one of the channel groups
48
- */
49
- function isAuthorizedToModifyStatusByLegacyGroup(channelGroups, userGroups) {
50
- return channelGroups.some((channelGroupId) => {
51
- return userGroups.some((group) => {
52
- const { id: userGroupId, userMembership: { memberType: userMemberType }, } = group;
53
- return (channelGroupId === userGroupId &&
54
- ADMIN_GROUP_ROLES.includes(userMemberType));
55
- });
56
- });
57
- }
58
- function isLegacyChannelOrgAdmin(channelOrgs, user) {
59
- return isOrgAdmin(user) && channelOrgs.includes(user.orgId);
60
- }
61
- //# sourceMappingURL=can-edit-post-status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-edit-post-status.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/posts/can-edit-post-status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAiB,EACjB,OAAiC,EAAE;IAEnC,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,6CAA6C,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,6CAA6C,CACpD,IAA8B,EAC9B,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,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,uCAAuC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED,uBAAuB;IACvB,OAAO,CACL,uCAAuC,CAAC,aAAa,EAAE,UAAU,CAAC;QAClE,uBAAuB,CAAC,WAAW,EAAE,IAAI,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uCAAuC,CAC9C,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,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC3C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAC9B,WAAqB,EACrB,IAA8B;IAE9B,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,62 +0,0 @@
1
- import { SharingAccess } from "../../enums/sharingAccess";
2
- import { CANNOT_DISCUSS } from "../../../constants";
3
- /**
4
- * Utility to determine if User has privileges to modify a post
5
- * @export
6
- * @deprecated replace with canEditPostV2 for v2 discussions
7
- * @param post
8
- * @param user
9
- * @param channel
10
- * @returns {boolean}
11
- */
12
- export function canModifyPost(post, user = {}, channel) {
13
- return canEditPost(post, user, channel);
14
- }
15
- /**
16
- * Utility to determine if User has privileges to modify a post
17
- * @export
18
- * @deprecated replace with canEditPostV2 for v2 discussions
19
- * @param post
20
- * @param user
21
- * @param channel
22
- * @returns {boolean}
23
- */
24
- export function canEditPost(post, user = {}, channel) {
25
- const { access, groups, orgs, allowAnonymous } = channel;
26
- return (isPostCreator(post, user) &&
27
- isAuthorizedToModifyByLegacyPermissions(user, {
28
- access,
29
- groups,
30
- orgs,
31
- allowAnonymous,
32
- }));
33
- }
34
- function isPostCreator(post, user) {
35
- return !!user.username && post.creator === user.username;
36
- }
37
- function isAuthorizedToModifyByLegacyPermissions(user, channelParams) {
38
- const { groups: userGroups = [], orgId: userOrgId } = user;
39
- const { access, groups: channelGroups = [], orgs = [] } = channelParams;
40
- if (access === SharingAccess.PUBLIC) {
41
- return true;
42
- }
43
- if (access === SharingAccess.ORG) {
44
- return (isAuthorizedToModifyPostByLegacyGroup(channelGroups, userGroups) ||
45
- orgs.includes(userOrgId));
46
- }
47
- // private
48
- return isAuthorizedToModifyPostByLegacyGroup(channelGroups, userGroups);
49
- }
50
- /**
51
- * Ensure the user is a member of one of the channel groups
52
- * and the group is not marked as non-discussable
53
- */
54
- function isAuthorizedToModifyPostByLegacyGroup(channelGroups, userGroups) {
55
- return channelGroups.some((channelGroupId) => {
56
- return userGroups.some((group) => {
57
- const { id: userGroupId, typeKeywords = [] } = group;
58
- return (channelGroupId === userGroupId && !typeKeywords.includes(CANNOT_DISCUSS));
59
- });
60
- });
61
- }
62
- //# sourceMappingURL=can-edit-post.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-edit-post.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/posts/can-edit-post.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOpD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAW,EACX,OAAiC,EAAE,EACnC,OAAiB;IAEjB,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,IAAW,EACX,OAAiC,EAAE,EACnC,OAAiB;IAEjB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAEzD,OAAO,CACL,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;QACzB,uCAAuC,CAAC,IAAI,EAAE;YAC5C,MAAM;YACN,MAAM;YACN,IAAI;YACJ,cAAc;SACf,CAAC,CACH,CAAC;AACJ,CAAC;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,uCAAuC,CAC9C,IAA8B,EAC9B,aAAwC;IAExC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC3D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC;IAExE,IAAI,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,CAAC,GAAG,EAAE,CAAC;QACjC,OAAO,CACL,qCAAqC,CAAC,aAAa,EAAE,UAAU,CAAC;YAChE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CACzB,CAAC;IACJ,CAAC;IAED,UAAU;IACV,OAAO,qCAAqC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,SAAS,qCAAqC,CAC5C,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,EAAE,EAAE,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;YAErD,OAAO,CACL,cAAc,KAAK,WAAW,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CACzE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,28 +0,0 @@
1
- import { canReadChannel } from "../channels/can-read-channel";
2
- /**
3
- * Utility that determines whether a Channel allows a given PostReaction
4
- * and whether the User has permissions to create it
5
- *
6
- * @export
7
- * @deprecated replace with canCreateReactionV2 for v2 discussions
8
- * @param {IChannel} channel
9
- * @param {PostReaction} value
10
- * @return {*} {boolean}
11
- */
12
- export function canCreateReaction(channel, value, user = {}) {
13
- if (!channelAllowsReaction(channel, value)) {
14
- return false;
15
- }
16
- return canReadChannel(channel, user);
17
- }
18
- function channelAllowsReaction(channel, value) {
19
- const { allowReaction, allowedReactions } = channel;
20
- if (!allowReaction) {
21
- return false;
22
- }
23
- if (allowedReactions) {
24
- return allowedReactions.includes(value);
25
- }
26
- return true;
27
- }
28
- //# sourceMappingURL=can-create-reaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-create-reaction.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/reactions/can-create-reaction.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAiB,EACjB,KAAmB,EACnB,OAAiC,EAAE;IAEnC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAiB,EACjB,KAAmB;IAEnB,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IACpD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canCreateChannel = canCreateChannel;
4
- const sharingAccess_1 = require("../../enums/sharingAccess");
5
- const platform_1 = require("../platform");
6
- const constants_1 = require("../../../constants");
7
- /**
8
- * Utility to determine if User has privileges to create a channel with the defined permissions
9
- * @deprecated replace with canCreateChannelV2 for v2 discussions
10
- * @export
11
- * @param channel
12
- * @param user
13
- * @returns {boolean}
14
- */
15
- function canCreateChannel(channel, user = {}) {
16
- const { access, groups, orgs } = channel;
17
- return isAuthorizedToCreateByLegacyPermissions(user, {
18
- access,
19
- groups,
20
- orgs,
21
- });
22
- }
23
- // Once ACL usage is enforced, we will remove authorization by legacy permissions
24
- function isAuthorizedToCreateByLegacyPermissions(user, channelParams) {
25
- const { username, groups: userGroups = [] } = user;
26
- const { access, groups: channelGroupIds = [], orgs: channelOrgs, } = channelParams;
27
- // ensure authenticated
28
- if (!username) {
29
- return false;
30
- }
31
- if (access === sharingAccess_1.SharingAccess.PRIVATE) {
32
- return canAllowGroupsLegacy(userGroups, channelGroupIds);
33
- }
34
- // public or org access
35
- return (canAllowGroupsLegacy(userGroups, channelGroupIds) &&
36
- isLegacyChannelOrgAdmin(user, channelOrgs));
37
- }
38
- function canAllowGroupsLegacy(userGroups, channelGroupIds) {
39
- return channelGroupIds.every((channelGroupId) => {
40
- const userGroup = userGroups.find((group) => group.id === channelGroupId);
41
- return (userGroup &&
42
- isMemberTypeAuthorized(userGroup) &&
43
- isGroupDiscussable(userGroup));
44
- });
45
- }
46
- function isMemberTypeAuthorized(userGroup) {
47
- const { userMembership: { memberType }, } = userGroup;
48
- return ["owner", "admin", "member"].includes(memberType);
49
- }
50
- function isGroupDiscussable(userGroup) {
51
- const { typeKeywords = [] } = userGroup;
52
- return !typeKeywords.includes(constants_1.CANNOT_DISCUSS);
53
- }
54
- function isLegacyChannelOrgAdmin(user, channelOrgs) {
55
- return (0, platform_1.isOrgAdmin)(user) && channelOrgs.includes(user.orgId);
56
- }
57
- //# sourceMappingURL=can-create-channel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"can-create-channel.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/can-create-channel.ts"],"names":[],"mappings":";;AAgBA,4CAWC;AAzBD,6DAA0D;AAC1D,0CAAyC;AACzC,kDAAoD;AAIpD;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAC9B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzC,OAAO,uCAAuC,CAAC,IAAI,EAAE;QACnD,MAAM;QACN,MAAM;QACN,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AACjF,SAAS,uCAAuC,CAC9C,IAA8B,EAC9B,aAAwC;IAExC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IACnD,MAAM,EACJ,MAAM,EACN,MAAM,EAAE,eAAe,GAAG,EAAE,EAC5B,IAAI,EAAE,WAAW,GAClB,GAAG,aAAa,CAAC;IAElB,uBAAuB;IACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,KAAK,6BAAa,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED,uBAAuB;IACvB,OAAO,CACL,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC;QACjD,uBAAuB,CAAC,IAAI,EAAE,WAAW,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAAoB,EACpB,eAAyB;IAEzB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,EAAE;QAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;QAE1E,OAAO,CACL,SAAS;YACT,sBAAsB,CAAC,SAAS,CAAC;YACjC,kBAAkB,CAAC,SAAS,CAAC,CAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAiB;IAC/C,MAAM,EACJ,cAAc,EAAE,EAAE,UAAU,EAAE,GAC/B,GAAG,SAAS,CAAC;IACd,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAAc,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAA8B,EAC9B,WAAqB;IAErB,OAAO,IAAA,qBAAU,EAAC,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canDeleteChannel = canDeleteChannel;
4
- const is_authorized_to_modify_channel_by_legacy_permissions_1 = require("./is-authorized-to-modify-channel-by-legacy-permissions");
5
- const portal_privilege_1 = require("../portal-privilege");
6
- /**
7
- * Utility to determine if User has privileges to delete a channel
8
- * @deprecated replace with canDeleteChannelV2 for v2 discussions
9
- * @export
10
- * @param channel
11
- * @param user
12
- * @returns {boolean}
13
- */
14
- function canDeleteChannel(channel, user = {}) {
15
- if ((0, portal_privilege_1.hasOrgAdminDeleteRights)(user, channel.orgId)) {
16
- return true;
17
- }
18
- return (0, is_authorized_to_modify_channel_by_legacy_permissions_1.isAuthorizedToModifyChannelByLegacyPermissions)(user, channel);
19
- }
20
- //# sourceMappingURL=can-delete-channel.js.map