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