@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 +0,0 @@
1
- {"version":3,"file":"can-delete-channel.js","sourceRoot":"","sources":["../../../../../../src/discussions/api/utils/channels/can-delete-channel.ts"],"names":[],"mappings":";;AAaA,4CASC;AApBD,mIAAyH;AACzH,0DAA8D;AAE9D;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAC9B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,IAAA,0CAAuB,EAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAA,sGAA8C,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC"}
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canEditChannel = canEditChannel;
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 edit a channel
8
- * @export
9
- * @deprecated replace with canEditChannelV2 for v2 discussions
10
- * @param channel
11
- * @param user
12
- * @returns {boolean}
13
- */
14
- function canEditChannel(channel, user = {}) {
15
- if ((0, portal_privilege_1.hasOrgAdminUpdateRights)(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-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":";;AAaA,wCASC;AApBD,mIAAyH;AACzH,0DAA8D;AAE9D;;;;;;;GAOG;AACH,SAAgB,cAAc,CAC5B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,IAAA,0CAAuB,EAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAA,sGAA8C,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canModifyChannel = canModifyChannel;
4
- const platform_1 = require("../platform");
5
- const is_authorized_to_modify_channel_by_legacy_permissions_1 = require("./is-authorized-to-modify-channel-by-legacy-permissions");
6
- // NO V2 EQUIVALENT. Use canEditChannelV2 or canDeleteChannelV2
7
- /**
8
- * Utility to determine if User has privileges to modify a channel
9
- * @deprecated use `canEditChannelV2` or `canDeleteChannelV2` instead.
10
- * @export
11
- * @param channel
12
- * @param user
13
- * @returns {boolean}
14
- */
15
- function canModifyChannel(channel, user = {}) {
16
- if ((0, platform_1.isOrgAdminInOrg)(user, channel.orgId)) {
17
- return true;
18
- }
19
- return (0, is_authorized_to_modify_channel_by_legacy_permissions_1.isAuthorizedToModifyChannelByLegacyPermissions)(user, channel);
20
- }
21
- //# 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":";;AAcA,4CASC;AArBD,0CAA8C;AAC9C,mIAAyH;AAEzH,+DAA+D;AAC/D;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAC9B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,IAAA,0BAAe,EAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAA,sGAA8C,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canPostToChannel = canPostToChannel;
4
- const sharingAccess_1 = require("../../enums/sharingAccess");
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 ((0, 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
- function isAuthorizedToPostByLegacyPermissions(user, channelParams) {
30
- const { username, groups: userGroups, orgId: userOrgId } = user;
31
- const { allowAnonymous, access, groups, orgs } = channelParams;
32
- // order is important here
33
- if (allowAnonymous === true) {
34
- return true;
35
- }
36
- if (!username) {
37
- return false;
38
- }
39
- if (access === sharingAccess_1.SharingAccess.PUBLIC) {
40
- return true;
41
- }
42
- if (access === sharingAccess_1.SharingAccess.PRIVATE) {
43
- return isAuthorizedToPostByLegacyGroup(groups, userGroups);
44
- }
45
- if (access === sharingAccess_1.SharingAccess.ORG) {
46
- return orgs.includes(userOrgId);
47
- }
48
- return false;
49
- }
50
- function isAuthorizedToPostByLegacyGroup(channelGroups = [], userGroups = []) {
51
- return channelGroups.some((channelGroupId) => {
52
- return userGroups.some((group) => {
53
- const { id: userGroupId, userMembership: { memberType: userMemberType }, typeKeywords, } = group;
54
- return (channelGroupId === userGroupId &&
55
- ALLOWED_GROUP_ROLES.includes(userMemberType) &&
56
- !typeKeywords.includes(constants_1.CANNOT_DISCUSS));
57
- });
58
- });
59
- }
60
- //# 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":";;AAsBA,4CAgBC;AApCD,6DAA0D;AAC1D,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,IAAA,0CAAuB,EAAC,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,6BAAa,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,6BAAa,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM,KAAK,6BAAa,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,0BAAc,CAAC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canReadChannel = canReadChannel;
4
- exports.canReadFromChannel = canReadFromChannel;
5
- const platform_1 = require("../platform");
6
- const portal_privilege_1 = require("../portal-privilege");
7
- /**
8
- * Utility to determine if User can view channel posts and channel attributes
9
- *
10
- * @deprecated replace with canReadChannelV2 for v2 discussions
11
- * @export
12
- * @param {IChannel} channel
13
- * @param {IUser} user
14
- * @return {*} {boolean}
15
- */
16
- function canReadChannel(channel, user = {}) {
17
- if ((0, portal_privilege_1.hasOrgAdminViewRights)(user, channel.orgId)) {
18
- return true;
19
- }
20
- if (channel.access === "private") {
21
- // ensure user is member of at least one group
22
- return intersectGroups(["member", "owner", "admin"])(user, channel);
23
- }
24
- if (channel.access === "org") {
25
- return (intersectGroups(["member", "owner", "admin"])(user, channel) ||
26
- isLegacyChannelOrgMember(channel, user));
27
- }
28
- // public channel
29
- return true;
30
- }
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
- function intersectGroups(membershipTypes) {
44
- return (user, channel) => {
45
- const { groups: sharedGroups = [] } = channel;
46
- const { groups: userGroups = [] } = user;
47
- const eligibleUserGroups = userGroups.reduce((0, platform_1.reduceByGroupMembership)(membershipTypes), []);
48
- const method = "some";
49
- return sharedGroups[method]((group) => eligibleUserGroups.indexOf(group) > -1);
50
- };
51
- }
52
- function isLegacyChannelOrgMember(channel, user) {
53
- // orgs.length = 1 until collaboration/discussion between many orgs is ideated
54
- return channel.orgs.length === 1 && channel.orgs.indexOf(user.orgId) > -1;
55
- }
56
- //# 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":";;AAeA,wCAsBC;AAWD,gDAKC;AAlDD,0CAAsD;AACtD,0DAA4D;AAE5D;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAC5B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,IAAA,wCAAqB,EAAC,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,SAAgB,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,IAAA,kCAAuB,EAAC,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,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAuthorizedToModifyChannelByLegacyPermissions = isAuthorizedToModifyChannelByLegacyPermissions;
4
- const platform_1 = require("../platform");
5
- const sharingAccess_1 = require("../../enums/sharingAccess");
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 === sharingAccess_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
- /**
33
- * Ensure the user is an owner/admin of one of the channel groups
34
- */
35
- function isAuthorizedToModifyChannelByLegacyGroup(channelGroups, userGroups) {
36
- return channelGroups.some((channelGroupId) => {
37
- return userGroups.some((group) => {
38
- const { id: userGroupId, userMembership: { memberType: userMemberType }, } = group;
39
- return (channelGroupId === userGroupId &&
40
- AGO_ADMIN_GROUP_ROLES.includes(userMemberType));
41
- });
42
- });
43
- }
44
- function isLegacyChannelOrgAdmin(channelOrgs, user) {
45
- return (0, platform_1.isOrgAdmin)(user) && channelOrgs.includes(user.orgId);
46
- }
47
- //# 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":";;AAeA,wGA8BC;AA5CD,0CAAyC;AAEzC,6DAA0D;AAE1D,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,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,6BAAa,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,IAAA,qBAAU,EAAC,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canCreatePost = canCreatePost;
4
- const sharingAccess_1 = require("../../enums/sharingAccess");
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 ((0, portal_privilege_1.hasOrgAdminUpdateRights)(user, channel.orgId)) {
20
- return true;
21
- }
22
- return isAuthorizedToPostByLegacyPermissions(user, {
23
- access,
24
- groups,
25
- orgs,
26
- });
27
- }
28
- function isAuthorizedToPostByLegacyPermissions(user, channelParams) {
29
- const { username, groups: userGroups, orgId: userOrgId } = user;
30
- const { access, groups, orgs } = channelParams;
31
- if (!username) {
32
- return false;
33
- }
34
- if (access === sharingAccess_1.SharingAccess.PUBLIC) {
35
- return true;
36
- }
37
- if (access === sharingAccess_1.SharingAccess.PRIVATE) {
38
- return isAuthorizedToPostByLegacyGroup(groups, userGroups);
39
- }
40
- if (access === sharingAccess_1.SharingAccess.ORG) {
41
- return orgs.includes(userOrgId);
42
- }
43
- return false;
44
- }
45
- function isAuthorizedToPostByLegacyGroup(channelGroups = [], userGroups = []) {
46
- return channelGroups.some((channelGroupId) => {
47
- return userGroups.some((group) => {
48
- const { id: userGroupId, userMembership: { memberType: userMemberType }, typeKeywords, } = group;
49
- return (channelGroupId === userGroupId &&
50
- ALLOWED_GROUP_ROLES.includes(userMemberType) &&
51
- !typeKeywords.includes(constants_1.CANNOT_DISCUSS));
52
- });
53
- });
54
- }
55
- //# 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":";;AAmBA,sCAeC;AAhCD,6DAA0D;AAC1D,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,IAAA,0CAAuB,EAAC,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,6BAAa,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,6BAAa,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM,KAAK,6BAAa,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,0BAAc,CAAC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canCreateReply = canCreateReply;
4
- const sharingAccess_1 = require("../../enums/sharingAccess");
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 ((0, portal_privilege_1.hasOrgAdminUpdateRights)(user, channel.orgId)) {
20
- return true;
21
- }
22
- return isAuthorizedToPostByLegacyPermissions(user, {
23
- access,
24
- groups,
25
- orgs,
26
- });
27
- }
28
- function isAuthorizedToPostByLegacyPermissions(user, channelParams) {
29
- const { username, groups: userGroups, orgId: userOrgId } = user;
30
- const { access, groups, orgs } = channelParams;
31
- if (!username) {
32
- return false;
33
- }
34
- if (access === sharingAccess_1.SharingAccess.PUBLIC) {
35
- return true;
36
- }
37
- if (access === sharingAccess_1.SharingAccess.PRIVATE) {
38
- return isAuthorizedToPostByLegacyGroup(groups, userGroups);
39
- }
40
- if (access === sharingAccess_1.SharingAccess.ORG) {
41
- return orgs.includes(userOrgId);
42
- }
43
- return false;
44
- }
45
- function isAuthorizedToPostByLegacyGroup(channelGroups = [], userGroups = []) {
46
- return channelGroups.some((channelGroupId) => {
47
- return userGroups.some((group) => {
48
- const { id: userGroupId, userMembership: { memberType: userMemberType }, typeKeywords, } = group;
49
- return (channelGroupId === userGroupId &&
50
- ALLOWED_GROUP_ROLES.includes(userMemberType) &&
51
- !typeKeywords.includes(constants_1.CANNOT_DISCUSS));
52
- });
53
- });
54
- }
55
- //# 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":";;AAmBA,wCAeC;AAhCD,6DAA0D;AAC1D,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,IAAA,0CAAuB,EAAC,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,6BAAa,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,6BAAa,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM,KAAK,6BAAa,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,0BAAc,CAAC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canDeletePost = canDeletePost;
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
- function isPostCreator(post, user) {
19
- return !!user.username && post.creator === user.username;
20
- }
21
- function isChannelModerator(channel, user) {
22
- if ((0, portal_privilege_1.hasOrgAdminUpdateRights)(user, channel.orgId)) {
23
- return true;
24
- }
25
- if (!channel.channelAcl) {
26
- return false;
27
- }
28
- const channelPermission = new channel_permission_1.ChannelPermission(channel);
29
- return channelPermission.canModerateChannel(user);
30
- }
31
- //# 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":";;AAcA,sCAMC;AAlBD,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;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,IAAA,0CAAuB,EAAC,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,sCAAiB,CAAC,OAAO,CAAC,CAAC;IACzD,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC"}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canModifyPostStatus = canModifyPostStatus;
4
- exports.canEditPostStatus = canEditPostStatus;
5
- const sharingAccess_1 = require("../../enums/sharingAccess");
6
- const platform_1 = require("../platform");
7
- const portal_privilege_1 = require("../portal-privilege");
8
- const ADMIN_GROUP_ROLES = Object.freeze(["owner", "admin"]);
9
- /**
10
- * Utility to determine if User has privileges to modify the status of a post
11
- * @export
12
- * @deprecated replace with canEditPostStatusV2 for v2 discussions
13
- * @param channel
14
- * @param user
15
- * @returns {boolean}
16
- */
17
- function canModifyPostStatus(channel, user = {}) {
18
- return canEditPostStatus(channel, user);
19
- }
20
- /**
21
- * Utility to determine if User has privileges to modify the status of a post
22
- * @export
23
- * @deprecated replace with canEditPostStatusV2 for v2 discussions
24
- * @param channel
25
- * @param user
26
- * @returns {boolean}
27
- */
28
- function canEditPostStatus(channel, user = {}) {
29
- if ((0, portal_privilege_1.hasOrgAdminUpdateRights)(user, channel.orgId)) {
30
- return true;
31
- }
32
- return isAuthorizedToModifyStatusByLegacyPermissions(user, channel);
33
- }
34
- function isAuthorizedToModifyStatusByLegacyPermissions(user, channel) {
35
- const { username, groups: userGroups = [] } = user;
36
- const { access, groups: channelGroups = [], orgs: channelOrgs = [], creator: channelCreator, } = channel;
37
- if (!username) {
38
- return false;
39
- }
40
- if (channelCreator === username) {
41
- return true;
42
- }
43
- if (access === sharingAccess_1.SharingAccess.PRIVATE) {
44
- return isAuthorizedToModifyStatusByLegacyGroup(channelGroups, userGroups);
45
- }
46
- // public or org access
47
- return (isAuthorizedToModifyStatusByLegacyGroup(channelGroups, userGroups) ||
48
- isLegacyChannelOrgAdmin(channelOrgs, user));
49
- }
50
- /**
51
- * Ensure the user is an owner/admin of one of the channel groups
52
- */
53
- function isAuthorizedToModifyStatusByLegacyGroup(channelGroups, userGroups) {
54
- return channelGroups.some((channelGroupId) => {
55
- return userGroups.some((group) => {
56
- const { id: userGroupId, userMembership: { memberType: userMemberType }, } = group;
57
- return (channelGroupId === userGroupId &&
58
- ADMIN_GROUP_ROLES.includes(userMemberType));
59
- });
60
- });
61
- }
62
- function isLegacyChannelOrgAdmin(channelOrgs, user) {
63
- return (0, platform_1.isOrgAdmin)(user) && channelOrgs.includes(user.orgId);
64
- }
65
- //# 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":";;AAgBA,kDAKC;AAUD,8CASC;AAtCD,6DAA0D;AAC1D,0CAAyC;AACzC,0DAA8D;AAE9D,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5D;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,OAAiB,EACjB,OAAiC,EAAE;IAEnC,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAC/B,OAAiB,EACjB,OAAiC,EAAE;IAEnC,IAAI,IAAA,0CAAuB,EAAC,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,6BAAa,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,IAAA,qBAAU,EAAC,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canModifyPost = canModifyPost;
4
- exports.canEditPost = canEditPost;
5
- const sharingAccess_1 = require("../../enums/sharingAccess");
6
- const constants_1 = require("../../../constants");
7
- /**
8
- * Utility to determine if User has privileges to modify a post
9
- * @export
10
- * @deprecated replace with canEditPostV2 for v2 discussions
11
- * @param post
12
- * @param user
13
- * @param channel
14
- * @returns {boolean}
15
- */
16
- function canModifyPost(post, user = {}, channel) {
17
- return canEditPost(post, user, channel);
18
- }
19
- /**
20
- * Utility to determine if User has privileges to modify a post
21
- * @export
22
- * @deprecated replace with canEditPostV2 for v2 discussions
23
- * @param post
24
- * @param user
25
- * @param channel
26
- * @returns {boolean}
27
- */
28
- function canEditPost(post, user = {}, channel) {
29
- const { access, groups, orgs, allowAnonymous } = channel;
30
- return (isPostCreator(post, user) &&
31
- isAuthorizedToModifyByLegacyPermissions(user, {
32
- access,
33
- groups,
34
- orgs,
35
- allowAnonymous,
36
- }));
37
- }
38
- function isPostCreator(post, user) {
39
- return !!user.username && post.creator === user.username;
40
- }
41
- function isAuthorizedToModifyByLegacyPermissions(user, channelParams) {
42
- const { groups: userGroups = [], orgId: userOrgId } = user;
43
- const { access, groups: channelGroups = [], orgs = [] } = channelParams;
44
- if (access === sharingAccess_1.SharingAccess.PUBLIC) {
45
- return true;
46
- }
47
- if (access === sharingAccess_1.SharingAccess.ORG) {
48
- return (isAuthorizedToModifyPostByLegacyGroup(channelGroups, userGroups) ||
49
- orgs.includes(userOrgId));
50
- }
51
- // private
52
- return isAuthorizedToModifyPostByLegacyGroup(channelGroups, userGroups);
53
- }
54
- /**
55
- * Ensure the user is a member of one of the channel groups
56
- * and the group is not marked as non-discussable
57
- */
58
- function isAuthorizedToModifyPostByLegacyGroup(channelGroups, userGroups) {
59
- return channelGroups.some((channelGroupId) => {
60
- return userGroups.some((group) => {
61
- const { id: userGroupId, typeKeywords = [] } = group;
62
- return (channelGroupId === userGroupId && !typeKeywords.includes(constants_1.CANNOT_DISCUSS));
63
- });
64
- });
65
- }
66
- //# 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":";;AAmBA,sCAMC;AAWD,kCAgBC;AAlDD,6DAA0D;AAC1D,kDAAoD;AAOpD;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAC3B,IAAW,EACX,OAAiC,EAAE,EACnC,OAAiB;IAEjB,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,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,6BAAa,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,6BAAa,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,0BAAc,CAAC,CACzE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canCreateReaction = canCreateReaction;
4
- const can_read_channel_1 = require("../channels/can-read-channel");
5
- /**
6
- * Utility that determines whether a Channel allows a given PostReaction
7
- * and whether the User has permissions to create it
8
- *
9
- * @export
10
- * @deprecated replace with canCreateReactionV2 for v2 discussions
11
- * @param {IChannel} channel
12
- * @param {PostReaction} value
13
- * @return {*} {boolean}
14
- */
15
- function canCreateReaction(channel, value, user = {}) {
16
- if (!channelAllowsReaction(channel, value)) {
17
- return false;
18
- }
19
- return (0, can_read_channel_1.canReadChannel)(channel, user);
20
- }
21
- function channelAllowsReaction(channel, value) {
22
- const { allowReaction, allowedReactions } = channel;
23
- if (!allowReaction) {
24
- return false;
25
- }
26
- if (allowedReactions) {
27
- return allowedReactions.includes(value);
28
- }
29
- return true;
30
- }
31
- //# 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":";;AAeA,8CAUC;AAtBD,mEAA8D;AAE9D;;;;;;;;;GASG;AACH,SAAgB,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,IAAA,iCAAc,EAAC,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,11 +0,0 @@
1
- import { IUser } from "@esri/arcgis-rest-portal";
2
- import { IChannel, IDiscussionsUser } from "../../types";
3
- /**
4
- * Utility to determine if User has privileges to create a channel with the defined permissions
5
- * @deprecated replace with canCreateChannelV2 for v2 discussions
6
- * @export
7
- * @param channel
8
- * @param user
9
- * @returns {boolean}
10
- */
11
- export declare function canCreateChannel(channel: IChannel, user?: IUser | IDiscussionsUser): boolean;
@@ -1,11 +0,0 @@
1
- import { IUser } from "@esri/arcgis-rest-portal";
2
- import { IChannel, IDiscussionsUser } from "../../types";
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 declare function canDeleteChannel(channel: IChannel, user?: IUser | IDiscussionsUser): boolean;
@@ -1,11 +0,0 @@
1
- import { IUser } from "@esri/arcgis-rest-portal";
2
- import { IChannel, IDiscussionsUser } from "../../types";
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 declare function canEditChannel(channel: IChannel, user?: IUser | IDiscussionsUser): boolean;
@@ -1,11 +0,0 @@
1
- import { IUser } from "@esri/arcgis-rest-portal";
2
- import { IChannel, IDiscussionsUser } from "../../types";
3
- /**
4
- * Utility to determine if User has privileges to modify a channel
5
- * @deprecated use `canEditChannelV2` or `canDeleteChannelV2` instead.
6
- * @export
7
- * @param channel
8
- * @param user
9
- * @returns {boolean}
10
- */
11
- export declare function canModifyChannel(channel: IChannel, user?: IUser | IDiscussionsUser): boolean;
@@ -1,11 +0,0 @@
1
- import { IUser } from "@esri/arcgis-rest-portal";
2
- import { IChannel, IDiscussionsUser } from "../../types";
3
- /**
4
- * Utility to determine if User has privileges to create a post in a channel
5
- * @deprecated use `canCreatePostV2` or 'canCreateReplyV2` instead
6
- * @export
7
- * @param channel
8
- * @param user
9
- * @returns {boolean}
10
- */
11
- export declare function canPostToChannel(channel: IChannel, user?: IUser | IDiscussionsUser): boolean;