Channel banner permissions (#30917)
* Fixed save state panel for channel banner * Defined default background color * Updated test * WIP * wip * removed unused param * Updated tests * CI * Fixed mmctl test * Fixed TestDoAdvancedPermissionsMigration test * Test update * lint fix * lint fix --------- Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
d73222dca9
Коммит
a5e68639c2
@@ -147,6 +147,7 @@ export default class PermissionGroup extends React.PureComponent<Props, State> {
|
||||
if (!this.isInScope(permission)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const comesFromParent = this.fromParent(permission);
|
||||
const active = comesFromParent || this.props.role?.permissions?.indexOf(permission) !== -1;
|
||||
const inherited = comesFromParent ? this.props.parentRole : undefined;
|
||||
|
||||
@@ -381,6 +381,7 @@ class PermissionSystemSchemeSettings extends React.PureComponent<Props, State> {
|
||||
if (!this.state.loaded) {
|
||||
return <LoadingScreen/>;
|
||||
}
|
||||
|
||||
const isLicensed = this.props.license?.IsLicensed === 'true';
|
||||
return (
|
||||
<div className='wrapper--fixed'>
|
||||
|
||||
@@ -10,7 +10,11 @@ import type {Role} from '@mattermost/types/roles';
|
||||
import GeneralConstants from 'mattermost-redux/constants/general';
|
||||
import Permissions from 'mattermost-redux/constants/permissions';
|
||||
|
||||
import {isEnterpriseLicense, isNonEnterpriseLicense} from 'utils/license_utils';
|
||||
import {
|
||||
isEnterpriseLicense,
|
||||
isMinimumEnterpriseAdvancedLicense,
|
||||
isNonEnterpriseLicense,
|
||||
} from 'utils/license_utils';
|
||||
|
||||
import type {AdditionalValues, Group} from './types';
|
||||
|
||||
@@ -286,6 +290,11 @@ export default class PermissionsTree extends React.PureComponent<Props, State> {
|
||||
});
|
||||
}
|
||||
|
||||
if (isMinimumEnterpriseAdvancedLicense(license)) {
|
||||
publicChannelsGroup.permissions.push(Permissions.MANAGE_PUBLIC_CHANNEL_BANNER);
|
||||
privateChannelsGroup.permissions.push(Permissions.MANAGE_PRIVATE_CHANNEL_BANNER);
|
||||
}
|
||||
|
||||
this.groups = this.groups.filter((group) => {
|
||||
if (group.isVisible) {
|
||||
return group.isVisible(this.props.license);
|
||||
|
||||
@@ -625,4 +625,24 @@ export const permissionRolesStrings: Record<string, Record<string, MessageDescri
|
||||
defaultMessage: 'Create, edit, and delete outgoing OAuth credentials.',
|
||||
},
|
||||
}),
|
||||
manage_public_channel_banner: defineMessages({
|
||||
name: {
|
||||
id: 'admin.permissions.permission.manage_public_channel_banner.name',
|
||||
defaultMessage: 'Manage Channel Banner',
|
||||
},
|
||||
description: {
|
||||
id: 'admin.permissions.permission.manage_public_channel_banner.description',
|
||||
defaultMessage: 'Enable, disable and edit channel banner.',
|
||||
},
|
||||
}),
|
||||
manage_private_channel_banner: defineMessages({
|
||||
name: {
|
||||
id: 'admin.permissions.permission.manage_private_channel_banner.name',
|
||||
defaultMessage: 'Manage Channel Banner',
|
||||
},
|
||||
description: {
|
||||
id: 'admin.permissions.permission.manage_private_channel_banner.description',
|
||||
defaultMessage: 'Enable, disable and edit channel banner.',
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
@@ -54,7 +54,17 @@ function ChannelSettingsModal({channelId, isOpen, onExited, focusOriginElement}:
|
||||
const {formatMessage} = useIntl();
|
||||
const dispatch = useDispatch();
|
||||
const channel = useSelector((state: GlobalState) => getChannel(state, channelId)) as Channel;
|
||||
const shouldShowConfigurationTab = useSelector(selectChannelBannerEnabled);
|
||||
const channelBannerEnabled = useSelector(selectChannelBannerEnabled);
|
||||
|
||||
const canManagePublicChannelBanner = useSelector((state: GlobalState) =>
|
||||
haveIChannelPermission(state, channel.team_id, channel.id, Permissions.MANAGE_PUBLIC_CHANNEL_BANNER),
|
||||
);
|
||||
const canManagePrivateChannelBanner = useSelector((state: GlobalState) =>
|
||||
haveIChannelPermission(state, channel.team_id, channel.id, Permissions.MANAGE_PRIVATE_CHANNEL_BANNER),
|
||||
);
|
||||
const hasManageChannelBannerPermission = (channel.type === 'O' && canManagePublicChannelBanner) || (channel.type === 'P' && canManagePrivateChannelBanner);
|
||||
|
||||
const shouldShowConfigurationTab = channelBannerEnabled && hasManageChannelBannerPermission;
|
||||
|
||||
const canArchivePrivateChannels = useSelector((state: GlobalState) =>
|
||||
haveIChannelPermission(state, channel.team_id, channel.id, Permissions.DELETE_PRIVATE_CHANNEL),
|
||||
|
||||
@@ -1749,8 +1749,12 @@
|
||||
"admin.permissions.permission.manage_outgoing_oauth_connections.name": "Manage Outgoing OAuth Credentials",
|
||||
"admin.permissions.permission.manage_outgoing_webhooks.description": "Create, edit, and delete outgoing webhooks.",
|
||||
"admin.permissions.permission.manage_outgoing_webhooks.name": "Manage Outgoing Webhooks",
|
||||
"admin.permissions.permission.manage_private_channel_banner.description": "Enable, disable and edit channel banner.",
|
||||
"admin.permissions.permission.manage_private_channel_banner.name": "Manage Channel Banner",
|
||||
"admin.permissions.permission.manage_private_channel_properties.description": "Update private channel names, headers and purposes.",
|
||||
"admin.permissions.permission.manage_private_channel_properties.name": "Manage Channel Settings",
|
||||
"admin.permissions.permission.manage_public_channel_banner.description": "Enable, disable and edit channel banner.",
|
||||
"admin.permissions.permission.manage_public_channel_banner.name": "Manage Channel Banner",
|
||||
"admin.permissions.permission.manage_public_channel_properties.description": "Update public channel names, headers and purposes.",
|
||||
"admin.permissions.permission.manage_public_channel_properties.name": "Manage Channel Settings",
|
||||
"admin.permissions.permission.manage_roles.description": "Manage roles",
|
||||
|
||||
@@ -30,6 +30,8 @@ const values = {
|
||||
DELETE_PUBLIC_CHANNEL: 'delete_public_channel',
|
||||
CONVERT_PUBLIC_CHANNEL_TO_PRIVATE: 'convert_public_channel_to_private',
|
||||
CONVERT_PRIVATE_CHANNEL_TO_PUBLIC: 'convert_private_channel_to_public',
|
||||
MANAGE_PUBLIC_CHANNEL_BANNER: 'manage_public_channel_banner',
|
||||
MANAGE_PRIVATE_CHANNEL_BANNER: 'manage_private_channel_banner',
|
||||
DELETE_PRIVATE_CHANNEL: 'delete_private_channel',
|
||||
EDIT_OTHER_USERS: 'edit_other_users',
|
||||
READ_CHANNEL: 'read_channel',
|
||||
|
||||
@@ -1307,6 +1307,8 @@ export const PermissionsScope = {
|
||||
[Permissions.EDIT_BOOKMARK_PRIVATE_CHANNEL]: 'channel_scope',
|
||||
[Permissions.DELETE_BOOKMARK_PRIVATE_CHANNEL]: 'channel_scope',
|
||||
[Permissions.ORDER_BOOKMARK_PRIVATE_CHANNEL]: 'channel_scope',
|
||||
[Permissions.MANAGE_PUBLIC_CHANNEL_BANNER]: 'channel_scope',
|
||||
[Permissions.MANAGE_PRIVATE_CHANNEL_BANNER]: 'channel_scope',
|
||||
};
|
||||
|
||||
export const DefaultRolePermissions = {
|
||||
@@ -1386,6 +1388,8 @@ export const DefaultRolePermissions = {
|
||||
Permissions.EDIT_BOOKMARK_PRIVATE_CHANNEL,
|
||||
Permissions.DELETE_BOOKMARK_PRIVATE_CHANNEL,
|
||||
Permissions.ORDER_BOOKMARK_PRIVATE_CHANNEL,
|
||||
Permissions.MANAGE_PUBLIC_CHANNEL_BANNER,
|
||||
Permissions.MANAGE_PRIVATE_CHANNEL_BANNER,
|
||||
],
|
||||
team_admin: [
|
||||
Permissions.EDIT_OTHERS_POSTS,
|
||||
@@ -1421,6 +1425,8 @@ export const DefaultRolePermissions = {
|
||||
Permissions.EDIT_BOOKMARK_PRIVATE_CHANNEL,
|
||||
Permissions.DELETE_BOOKMARK_PRIVATE_CHANNEL,
|
||||
Permissions.ORDER_BOOKMARK_PRIVATE_CHANNEL,
|
||||
Permissions.MANAGE_PUBLIC_CHANNEL_BANNER,
|
||||
Permissions.MANAGE_PRIVATE_CHANNEL_BANNER,
|
||||
],
|
||||
guests: [
|
||||
Permissions.EDIT_POST,
|
||||
|
||||
@@ -128,3 +128,11 @@ export function isMinimumEnterpriseLicense(license: ClientLicense): boolean {
|
||||
|
||||
return getLicenseTier(license.SkuShortName) >= getLicenseTier(LicenseSkus.Enterprise);
|
||||
}
|
||||
|
||||
export function isMinimumEnterpriseAdvancedLicense(license?: ClientLicense): boolean {
|
||||
if (!license) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return getLicenseTier(license.SkuShortName) >= getLicenseTier(LicenseSkus.EnterpriseAdvanced);
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user