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