diff options
author | Saturnino Abril <saturnino.abril@gmail.com> | 2017-07-05 06:32:27 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-05 06:32:27 +0800 |
commit | 8f8a978e84ec8bbeac22928e6112bc697fa7176d (patch) | |
tree | a82993cfcd1aab059554feeeb1a6256d4640eab4 /webapp/components | |
parent | 6d6ed309b9b7f2b77cd013583990c6eb88f18aff (diff) | |
download | chat-8f8a978e84ec8bbeac22928e6112bc697fa7176d.tar.gz chat-8f8a978e84ec8bbeac22928e6112bc697fa7176d.tar.bz2 chat-8f8a978e84ec8bbeac22928e6112bc697fa7176d.zip |
[PLT-6838] Restrict channel delete option per permission policy even for last channel member (#6706)
* channel delete option is hidden from the menu unless there is appropriate permissions as set in the policy page
* apply to public channel only and add restriction to API layer
* updated channel deletion
Diffstat (limited to 'webapp/components')
-rw-r--r-- | webapp/components/channel_header.jsx | 6 | ||||
-rw-r--r-- | webapp/components/delete_channel_modal.jsx | 1 | ||||
-rw-r--r-- | webapp/components/navbar.jsx | 32 |
3 files changed, 17 insertions, 22 deletions
diff --git a/webapp/components/channel_header.jsx b/webapp/components/channel_header.jsx index a409baec6..b6fcf7ef7 100644 --- a/webapp/components/channel_header.jsx +++ b/webapp/components/channel_header.jsx @@ -720,11 +720,7 @@ export default class ChannelHeader extends React.Component { ); } - if (ChannelUtils.showDeleteOption(channel, isAdmin, isSystemAdmin, isChannelAdmin)) { - if (!ChannelStore.isDefault(channel)) { - dropdownContents.push(deleteOption); - } - } else if (this.state.userCount === 1) { + if (ChannelUtils.showDeleteOption(channel, isAdmin, isSystemAdmin, isChannelAdmin, this.state.userCount)) { dropdownContents.push(deleteOption); } diff --git a/webapp/components/delete_channel_modal.jsx b/webapp/components/delete_channel_modal.jsx index 74ba51a4c..fd5447524 100644 --- a/webapp/components/delete_channel_modal.jsx +++ b/webapp/components/delete_channel_modal.jsx @@ -33,6 +33,7 @@ export default class DeleteChannelModal extends React.Component { browserHistory.push(TeamStore.getCurrentTeamRelativeUrl() + '/channels/town-square'); deleteChannel(this.props.channel.id); + this.onHide(); } onHide() { diff --git a/webapp/components/navbar.jsx b/webapp/components/navbar.jsx index b27e22709..fa759cae7 100644 --- a/webapp/components/navbar.jsx +++ b/webapp/components/navbar.jsx @@ -529,23 +529,21 @@ export default class Navbar extends React.Component { ); } - if (ChannelUtils.showDeleteOption(channel, isAdmin, isSystemAdmin, isChannelAdmin) || this.state.userCount === 1) { - if (!ChannelStore.isDefault(channel)) { - deleteChannelOption = ( - <li role='presentation'> - <ToggleModalButton - role='menuitem' - dialogType={DeleteChannelModal} - dialogProps={{channel}} - > - <FormattedMessage - id='channel_header.delete' - defaultMessage='Delete Channel' - /> - </ToggleModalButton> - </li> - ); - } + if (ChannelUtils.showDeleteOption(channel, isAdmin, isSystemAdmin, isChannelAdmin, this.state.userCount)) { + deleteChannelOption = ( + <li role='presentation'> + <ToggleModalButton + role='menuitem' + dialogType={DeleteChannelModal} + dialogProps={{channel}} + > + <FormattedMessage + id='channel_header.delete' + defaultMessage='Delete Channel' + /> + </ToggleModalButton> + </li> + ); } const canLeave = channel.type === Constants.PRIVATE_CHANNEL ? this.state.userCount > 1 : true; |