Skip to content
This repository has been archived by the owner on Mar 13, 2024. It is now read-only.

Commit

Permalink
Using new splited emojis and webhooks permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
jespino committed Feb 5, 2019
1 parent 0940976 commit c275b7a
Show file tree
Hide file tree
Showing 16 changed files with 83 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,12 @@ t('admin.permissions.permission.manage_channel_roles.description');
t('admin.permissions.permission.manage_channel_roles.name');
t('admin.permissions.permission.manage_emojis.description');
t('admin.permissions.permission.manage_emojis.name');
t('admin.permissions.permission.create_emojis.description');
t('admin.permissions.permission.create_emojis.name');
t('admin.permissions.permission.delete_emojis.description');
t('admin.permissions.permission.delete_emojis.name');
t('admin.permissions.permission.delete_others_emojis.description');
t('admin.permissions.permission.delete_others_emojis.name');
t('admin.permissions.permission.manage_jobs.description');
t('admin.permissions.permission.manage_jobs.name');
t('admin.permissions.permission.manage_oauth.description');
Expand All @@ -336,6 +342,10 @@ t('admin.permissions.permission.manage_team_roles.description');
t('admin.permissions.permission.manage_team_roles.name');
t('admin.permissions.permission.manage_webhooks.description');
t('admin.permissions.permission.manage_webhooks.name');
t('admin.permissions.permission.manage_incoming_webhooks.description');
t('admin.permissions.permission.manage_incoming_webhooks.name');
t('admin.permissions.permission.manage_outgoing_webhooks.description');
t('admin.permissions.permission.manage_outgoing_webhooks.name');
t('admin.permissions.permission.permanent_delete_user.description');
t('admin.permissions.permission.permanent_delete_user.name');
t('admin.permissions.permission.read_channel.description');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,17 +114,26 @@ export default class PermissionsTree extends React.Component {
updateGroups = () => {
const {config, scope} = this.props;
const integrationsGroup = this.groups[this.groups.length - 1];
if ((config.EnableIncomingWebhooks === 'true' || config.EnableOutgoingWebhooks === 'true') && integrationsGroup.permissions.indexOf('manage_webhooks') === -1) {
integrationsGroup.permissions.push('manage_webhooks');
if (config.EnableIncomingWebhooks === 'true' && integrationsGroup.permissions.indexOf('manage_incoming_webhooks') === -1) {
integrationsGroup.permissions.push('manage_incoming_webhooks');
}
if (config.EnableOutgoingWebhooks === 'true' && integrationsGroup.permissions.indexOf('manage_outgoing_webhooks') === -1) {
integrationsGroup.permissions.push('manage_outgoing_webhooks');
}
if (config.EnableOAuthServiceProvider === 'true' && integrationsGroup.permissions.indexOf('manage_oauth') === -1) {
integrationsGroup.permissions.push('manage_oauth');
}
if (config.EnableCommands === 'true' && integrationsGroup.permissions.indexOf('manage_slash_commands') === -1) {
integrationsGroup.permissions.push('manage_slash_commands');
}
if (config.EnableCustomEmoji === 'true' && integrationsGroup.permissions.indexOf('manage_emojis') === -1) {
integrationsGroup.permissions.push('manage_emojis');
if (config.EnableCustomEmoji === 'true' && integrationsGroup.permissions.indexOf('create_emojis') === -1) {
integrationsGroup.permissions.push('create_emojis');
}
if (config.EnableCustomEmoji === 'true' && integrationsGroup.permissions.indexOf('delete_emojis') === -1) {
integrationsGroup.permissions.push('delete_emojis');
}
if (config.EnableCustomEmoji === 'true' && integrationsGroup.permissions.indexOf('delete_others_emojis') === -1) {
integrationsGroup.permissions.push('delete_others_emojis');
}
if (scope === 'team_scope' && this.groups[0].id !== 'teams_team_scope') {
this.groups[0].id = 'teams_team_scope';
Expand Down
4 changes: 2 additions & 2 deletions components/backstage/backstage_controller.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ export default class BackstageController extends React.Component {
enableOutgoingWebhooks: PropTypes.bool.isRequired,
enableCommands: PropTypes.bool.isRequired,
enableOAuthServiceProvider: PropTypes.bool.isRequired,
canCreateCustomEmoji: PropTypes.bool.isRequired,
canCreateOrDeleteCustomEmoji: PropTypes.bool.isRequired,
}

scrollToTop = () => {
Expand Down Expand Up @@ -107,7 +107,7 @@ export default class BackstageController extends React.Component {
enableOutgoingWebhooks={this.props.enableOutgoingWebhooks}
enableCommands={this.props.enableCommands}
enableOAuthServiceProvider={this.props.enableOAuthServiceProvider}
canCreateCustomEmoji={this.props.canCreateCustomEmoji}
canCreateOrDeleteCustomEmoji={this.props.canCreateOrDeleteCustomEmoji}
/>
<Switch>
<BackstageRoute
Expand Down
10 changes: 5 additions & 5 deletions components/backstage/components/backstage_sidebar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ export default class BackstageSidebar extends React.Component {
enableOutgoingWebhooks: PropTypes.bool.isRequired,
enableCommands: PropTypes.bool.isRequired,
enableOAuthServiceProvider: PropTypes.bool.isRequired,
canCreateCustomEmoji: PropTypes.bool.isRequired,
canCreateOrDeleteCustomEmoji: PropTypes.bool.isRequired,
};
}

renderCustomEmoji() {
if (!this.props.enableCustomEmoji || !this.props.canCreateCustomEmoji) {
if (!this.props.enableCustomEmoji || !this.props.canCreateOrDeleteCustomEmoji) {
return null;
}

Expand Down Expand Up @@ -59,7 +59,7 @@ export default class BackstageSidebar extends React.Component {
if (this.props.enableIncomingWebhooks) {
incomingWebhooks = (
<TeamPermissionGate
permissions={[Permissions.MANAGE_WEBHOOKS]}
permissions={[Permissions.MANAGE_INCOMING_WEBHOOKS]}
teamId={this.props.team.id}
>
<BackstageSection
Expand All @@ -80,7 +80,7 @@ export default class BackstageSidebar extends React.Component {
if (this.props.enableOutgoingWebhooks) {
outgoingWebhooks = (
<TeamPermissionGate
permissions={[Permissions.MANAGE_WEBHOOKS]}
permissions={[Permissions.MANAGE_OUTGOING_WEBHOOKS]}
teamId={this.props.team.id}
>
<BackstageSection
Expand Down Expand Up @@ -138,7 +138,7 @@ export default class BackstageSidebar extends React.Component {

return (
<TeamPermissionGate
permissions={[Permissions.MANAGE_WEBHOOKS, Permissions.MANAGE_SLASH_COMMANDS, Permissions.MANAGE_OAUTH]}
permissions={[Permissions.MANAGE_INCOMING_WEBHOOKS, Permissions.MANAGE_OUTGOING_WEBHOOKS, Permissions.MANAGE_SLASH_COMMANDS, Permissions.MANAGE_OAUTH]}
teamId={this.props.team.id}
>
<BackstageCategory
Expand Down
10 changes: 5 additions & 5 deletions components/backstage/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ function mapStateToProps(state) {
const enableCommands = config.EnableCommands === 'true';
const enableOAuthServiceProvider = config.EnableOAuthServiceProvider === 'true';

let canCreateCustomEmoji = haveISystemPermission(state, {permission: Permissions.MANAGE_EMOJIS});
if (!canCreateCustomEmoji) {
let canCreateOrDeleteCustomEmoji = (haveISystemPermission(state, {permission: Permissions.CREATE_EMOJIS}) || haveISystemPermission(state, {permission: Permissions.DELETE_EMOJIS}));
if (!canCreateOrDeleteCustomEmoji) {
for (const t of getMyTeams(state)) {
if (haveITeamPermission(state, {team: t.id, permission: Permissions.MANAGE_EMOJIS})) {
canCreateCustomEmoji = true;
if (haveITeamPermission(state, {team: t.id, permission: Permissions.CREATE_EMOJIS}) || haveITeamPermission(state, {team: t.id, permission: Permissions.DELETE_EMOJIS})) {
canCreateOrDeleteCustomEmoji = true;
break;
}
}
Expand All @@ -44,7 +44,7 @@ function mapStateToProps(state) {
enableOutgoingWebhooks,
enableCommands,
enableOAuthServiceProvider,
canCreateCustomEmoji,
canCreateOrDeleteCustomEmoji,
};
}

Expand Down
6 changes: 3 additions & 3 deletions components/emoji/emoji_list_item/emoji_list_item.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export default class EmojiListItem extends React.Component {
deleteButton = (
<TeamPermissionGate
teamId={this.props.currentTeam.id}
permissions={[Permissions.MANAGE_EMOJIS]}
permissions={[Permissions.DELETE_EMOJIS]}
>
<DeleteEmoji onDelete={this.handleDelete}/>
</TeamPermissionGate>
Expand All @@ -61,11 +61,11 @@ export default class EmojiListItem extends React.Component {
deleteButton = (
<TeamPermissionGate
teamId={this.props.currentTeam.id}
permissions={[Permissions.MANAGE_EMOJIS]}
permissions={[Permissions.DELETE_EMOJIS]}
>
<TeamPermissionGate
teamId={this.props.currentTeam.id}
permissions={[Permissions.MANAGE_OTHERS_EMOJIS]}
permissions={[Permissions.DELETE_OTHERS_EMOJIS]}
>
<DeleteEmoji onDelete={this.handleDelete}/>
</TeamPermissionGate>
Expand Down
2 changes: 1 addition & 1 deletion components/emoji/emoji_page.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export default class EmojiPage extends React.Component {
</h1>
<TeamPermissionGate
teamId={this.props.teamId}
permissions={[Permissions.MANAGE_EMOJIS]}
permissions={[Permissions.CREATE_EMOJIS]}
>
<Link
className='add-link'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import InstalledIncomingWebhooks from './installed_incoming_webhooks.jsx';
function mapStateToProps(state) {
const config = getConfig(state);
const teamId = getCurrentTeamId(state);
const canManageOthersWebhooks = haveITeamPermission(state, {team: teamId, permission: Permissions.MANAGE_OTHERS_WEBHOOKS});
const canManageOthersWebhooks = haveITeamPermission(state, {team: teamId, permission: Permissions.MANAGE_INCOMING_OTHERS_WEBHOOKS});
const incomingHooks = getIncomingHooks(state);
const incomingWebhooks = Object.keys(incomingHooks).
map((key) => incomingHooks[key]).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import InstalledOutgoingWebhook from './installed_outgoing_webhooks.jsx';
function mapStateToProps(state) {
const config = getConfig(state);
const teamId = getCurrentTeamId(state);
const canManageOthersWebhooks = haveITeamPermission(state, {team: teamId, permission: Permissions.MANAGE_OTHERS_WEBHOOKS});
const canManageOthersWebhooks = haveITeamPermission(state, {team: teamId, permission: Permissions.MANAGE_OUTGOING_OTHERS_WEBHOOKS});
const outgoingHooks = getOutgoingHooks(state);
const outgoingWebhooks = Object.keys(outgoingHooks).
map((key) => outgoingHooks[key]).
Expand Down
4 changes: 2 additions & 2 deletions components/integrations/integrations.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export default class Integrations extends React.Component {
options.push(
<TeamPermissionGate
teamId={this.props.team.id}
permissions={[Permissions.MANAGE_WEBHOOKS]}
permissions={[Permissions.MANAGE_INCOMING_WEBHOOKS]}
key='incomingWebhookPermission'
>
<IntegrationOption
Expand Down Expand Up @@ -75,7 +75,7 @@ export default class Integrations extends React.Component {
options.push(
<TeamPermissionGate
teamId={this.props.team.id}
permissions={[Permissions.MANAGE_WEBHOOKS]}
permissions={[Permissions.MANAGE_OUTGOING_WEBHOOKS]}
key='outgoingWebhookPermission'
>
<IntegrationOption
Expand Down
10 changes: 5 additions & 5 deletions components/sidebar/header/dropdown/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ function mapStateToProps(state) {
const helpLink = config.HelpLink;
const reportAProblemLink = config.ReportAProblemLink;

let canCreateCustomEmoji = haveISystemPermission(state, {permission: Permissions.MANAGE_EMOJIS});
if (!canCreateCustomEmoji) {
let canCreateOrDeleteCustomEmoji = (haveISystemPermission(state, {permission: Permissions.CREATE_EMOJIS}) || haveISystemPermission(state, {permission: Permissions.DELETE_EMOJIS}));
if (!canCreateOrDeleteCustomEmoji) {
for (const team of getMyTeams(state)) {
if (haveITeamPermission(state, {team: team.id, permission: Permissions.MANAGE_EMOJIS})) {
canCreateCustomEmoji = true;
if (haveITeamPermission(state, {team: team.id, permission: Permissions.CREATE_EMOJIS}) || haveITeamPermission(state, {team: team.id, permission: Permissions.DELETE_EMOJIS})) {
canCreateOrDeleteCustomEmoji = true;
break;
}
}
Expand All @@ -58,7 +58,7 @@ function mapStateToProps(state) {
helpLink,
reportAProblemLink,
pluginMenuItems: state.plugins.components.MainMenu,
canCreateCustomEmoji,
canCreateOrDeleteCustomEmoji,
moreTeamsToJoin,
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export default class SidebarHeaderDropdown extends React.PureComponent {
appDownloadLink: PropTypes.string,
enableCommands: PropTypes.bool.isRequired,
enableCustomEmoji: PropTypes.bool.isRequired,
canCreateCustomEmoji: PropTypes.bool.isRequired,
canCreateOrDeleteCustomEmoji: PropTypes.bool.isRequired,
enableIncomingWebhooks: PropTypes.bool.isRequired,
enableOAuthServiceProvider: PropTypes.bool.isRequired,
enableOutgoingWebhooks: PropTypes.bool.isRequired,
Expand Down Expand Up @@ -187,7 +187,7 @@ export default class SidebarHeaderDropdown extends React.PureComponent {
}

renderCustomEmojiLink = () => {
if (!this.props.enableCustomEmoji || !this.props.canCreateCustomEmoji) {
if (!this.props.enableCustomEmoji || !this.props.canCreateOrDeleteCustomEmoji) {
return null;
}

Expand Down Expand Up @@ -358,7 +358,7 @@ export default class SidebarHeaderDropdown extends React.PureComponent {
integrationsLink = (
<TeamPermissionGate
teamId={this.props.teamId}
permissions={[Permissions.MANAGE_SLASH_COMMANDS, Permissions.MANAGE_OAUTH, Permissions.MANAGE_WEBHOOKS]}
permissions={[Permissions.MANAGE_SLASH_COMMANDS, Permissions.MANAGE_OAUTH, Permissions.MANAGE_INCOMING_WEBHOOKS, Permissions.MANAGE_OUTGOING_WEBHOOKS]}
>
<li>
<Link
Expand Down
10 changes: 10 additions & 0 deletions i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -851,6 +851,12 @@
"admin.permissions.permission.manage_channel_roles.name": "Manage channel roles",
"admin.permissions.permission.manage_emojis.description": "Create and delete custom emoji.",
"admin.permissions.permission.manage_emojis.name": "Manage Custom Emoji",
"admin.permissions.permission.create_emojis.description": "Create custom emoji.",
"admin.permissions.permission.create_emojis.name": "Create Custom Emoji",
"admin.permissions.permission.delete_emojis.description": "Delete custom emoji.",
"admin.permissions.permission.delete_emojis.name": "Delete Custom Emoji",
"admin.permissions.permission.delete_others_emojis.description": "Delete others' custom emoji.",
"admin.permissions.permission.delete_others_emojis.name": "Delete Others' Custom Emoji",
"admin.permissions.permission.manage_jobs.description": "Manage jobs",
"admin.permissions.permission.manage_jobs.name": "Manage jobs",
"admin.permissions.permission.manage_oauth.description": "Create, edit and delete OAuth 2.0 application tokens.",
Expand All @@ -875,6 +881,10 @@
"admin.permissions.permission.manage_team.name": "Manage team",
"admin.permissions.permission.manage_webhooks.description": "Create, edit, and delete incoming and outgoing webhooks.",
"admin.permissions.permission.manage_webhooks.name": "Manage Webhooks",
"admin.permissions.permission.manage_incoming_webhooks.description": "Create, edit, and delete incoming webhooks.",
"admin.permissions.permission.manage_incoming_webhooks.name": "Manage Incoming Webhooks",
"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.permanent_delete_user.description": "Permanent delete user",
"admin.permissions.permission.permanent_delete_user.name": "Permanent delete user",
"admin.permissions.permission.read_channel.description": "Read channel",
Expand Down
18 changes: 11 additions & 7 deletions utils/constants.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -487,8 +487,10 @@ export const PermissionsScope = {
[Permissions.PERMANENT_DELETE_USER]: 'system_scope',
[Permissions.UPLOAD_FILE]: 'channel_scope',
[Permissions.GET_PUBLIC_LINK]: 'system_scope',
[Permissions.MANAGE_WEBHOOKS]: 'team_scope',
[Permissions.MANAGE_OTHERS_WEBHOOKS]: 'team_scope',
[Permissions.MANAGE_INCOMING_WEBHOOKS]: 'team_scope',
[Permissions.MANAGE_INCOMING_OTHERS_WEBHOOKS]: 'team_scope',
[Permissions.MANAGE_OUTGOING_WEBHOOKS]: 'team_scope',
[Permissions.MANAGE_OUTGOING_OTHERS_WEBHOOKS]: 'team_scope',
[Permissions.MANAGE_OAUTH]: 'system_scope',
[Permissions.MANAGE_SYSTEM_WIDE_OAUTH]: 'system_scope',
[Permissions.CREATE_POST]: 'channel_scope',
Expand All @@ -507,8 +509,9 @@ export const PermissionsScope = {
[Permissions.READ_USER_ACCESS_TOKEN]: 'system_scope',
[Permissions.REVOKE_USER_ACCESS_TOKEN]: 'system_scope',
[Permissions.MANAGE_JOBS]: 'system_scope',
[Permissions.MANAGE_EMOJIS]: 'team_scope',
[Permissions.MANAGE_OTHERS_EMOJIS]: 'team_scope',
[Permissions.CREATE_EMOJIS]: 'team_scope',
[Permissions.DELETE_EMOJIS]: 'team_scope',
[Permissions.DELETE_OTHERS_EMOJIS]: 'team_scope',
};

export const DefaultRolePermissions = {
Expand Down Expand Up @@ -540,7 +543,8 @@ export const DefaultRolePermissions = {
Permissions.MANAGE_PRIVATE_CHANNEL_MEMBERS,
Permissions.DELETE_POST,
Permissions.EDIT_POST,
Permissions.MANAGE_EMOJIS,
Permissions.MANAGE_CREATE_EMOJIS,
Permissions.MANAGE_DELETE_EMOJIS,
],
channel_admin: [
Permissions.MANAGE_CHANNEL_ROLES,
Expand All @@ -552,10 +556,10 @@ export const DefaultRolePermissions = {
Permissions.IMPORT_TEAM,
Permissions.MANAGE_TEAM_ROLES,
Permissions.MANAGE_CHANNEL_ROLES,
Permissions.MANAGE_OTHERS_WEBHOOKS,
Permissions.MANAGE_SLASH_COMMANDS,
Permissions.MANAGE_OTHERS_SLASH_COMMANDS,
Permissions.MANAGE_WEBHOOKS,
Permissions.MANAGE_INCOMING_WEBHOOKS,
Permissions.MANAGE_OUTGOING_WEBHOOKS,
Permissions.DELETE_POST,
Permissions.DELETE_OTHERS_POSTS,
],
Expand Down
6 changes: 4 additions & 2 deletions utils/policy_roles_adapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,14 @@ const MAPPING = {

enableOnlyAdminIntegrations: {
true: [
{roleName: 'team_user', permission: Permissions.MANAGE_WEBHOOKS, shouldHave: false},
{roleName: 'team_user', permission: Permissions.MANAGE_INCOMING_WEBHOOKS, shouldHave: false},
{roleName: 'team_user', permission: Permissions.MANAGE_OUTGOING_WEBHOOKS, shouldHave: false},
{roleName: 'team_user', permission: Permissions.MANAGE_SLASH_COMMANDS, shouldHave: false},
{roleName: 'system_user', permission: Permissions.MANAGE_OAUTH, shouldHave: false},
],
false: [
{roleName: 'team_user', permission: Permissions.MANAGE_WEBHOOKS, shouldHave: true},
{roleName: 'team_user', permission: Permissions.MANAGE_INCOMING_WEBHOOKS, shouldHave: true},
{roleName: 'team_user', permission: Permissions.MANAGE_OUTGOING_WEBHOOKS, shouldHave: true},
{roleName: 'team_user', permission: Permissions.MANAGE_SLASH_COMMANDS, shouldHave: true},
{roleName: 'system_user', permission: Permissions.MANAGE_OAUTH, shouldHave: true},
],
Expand Down
Loading

0 comments on commit c275b7a

Please sign in to comment.