Skip to content

Commit

Permalink
fix permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
ggazzo committed May 18, 2018
1 parent 44cda3a commit c9ad6ec
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 61 deletions.
2 changes: 1 addition & 1 deletion packages/rocketchat-ui-flextab/client/flexTabBar.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ <h1 class="contextual-bar__header-title">{{_ label}}</h1>
<template name="RoomsActionTab">
<div class="rc-room-actions">
{{#each buttons}}
<div class="rc-room-actions__action tab-button {{active}} {{visible}} {{class}} js-action">
<div class="rc-room-actions__action tab-button {{active}} {{visible}} {{class}} js-action" data-id="{{id}}">
<button class="rc-tooltip rc-tooltip--down rc-room-actions__button" aria-label="{{title}}">
{{> icon block="tab-button-icon" icon=icon }}
</button>
Expand Down
100 changes: 44 additions & 56 deletions packages/rocketchat-ui-flextab/client/flexTabBar.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,51 @@ const commonHelpers = {
}
}
};

function canShowAddUsersButton(rid) {
const canAddToChannel = RocketChat.authz.hasAllPermission(
'add-user-to-any-c-room', rid
);
const canAddToGroup = RocketChat.authz.hasAllPermission(
'add-user-to-any-p-room', rid
);
const canAddToJoinedRoom = RocketChat.authz.hasAllPermission(
'add-user-to-joined-room', rid
);
if (
!canAddToJoinedRoom &&
!canAddToChannel &&
Template.instance().tabBar.currentGroup() === 'channel'
) {
return false;
}
if (
!canAddToJoinedRoom &&
!canAddToGroup &&
Template.instance().tabBar.currentGroup() === 'group'
) {
return false;
}
return true;
}
const filterButtons = (button, anonymous, rid) => {
if (!Meteor.userId() && !anonymous) {
return false;
}
if (button.groups.indexOf(Template.instance().tabBar.currentGroup()) === -1) {
return false;
}
if (button.id === 'addUsers' && !canShowAddUsersButton(rid)) {
return false;
}
return true;
};
Template.flexTabBar.helpers({
headerData() {
return Template.instance().tabBar.getData();
},
...commonHelpers,
buttons() {
return RocketChat.TabBar.getButtons().filter(button => {
if (!Meteor.userId() && !this.anonymous) {
return false;
}
if (button.groups.indexOf(Template.instance().tabBar.currentGroup()) === -1) {
return false;
}
return true;
});
return RocketChat.TabBar.getButtons().filter(button => filterButtons(button, this.anonymous, this.data.rid));
},
opened() {
return Template.instance().tabBar.getState();
Expand Down Expand Up @@ -126,36 +155,12 @@ Template.RoomsActionMore.onCreated(function() {
this.tabBar = Template.currentData().tabBar;
});

function canShowAddUsersButton(button) {
const canAddToChannel = RocketChat.authz.hasAllPermission('add-user-to-any-c-room');
const canAddToGroup = RocketChat.authz.hasAllPermission('add-user-to-any-p-room');
const canAddToJoinedRoom = RocketChat.authz.hasAllPermission('add-user-to-joined-room');
if (!canAddToJoinedRoom && !canAddToChannel && Template.instance().tabBar.currentGroup() === 'channel' && button.id === 'addUsers') {
return false;
}
if (!canAddToJoinedRoom && !canAddToGroup && Template.instance().tabBar.currentGroup() === 'group' && button.id === 'addUsers') {
return false;
}
return true;
}

Template.RoomsActionTab.events({
...commonEvents,
'click .js-more'(e, instance) {
$(e.currentTarget).blur();
e.preventDefault();
const buttons = RocketChat.TabBar.getButtons().filter(button => {
if (!Meteor.userId() && !this.anonymous) {
return false;
}
if (button.groups.indexOf(Template.instance().tabBar.currentGroup()) === -1) {
return false;
}
if (!canShowAddUsersButton(button)) {
return false;
}
return true;
});
const buttons = RocketChat.TabBar.getButtons().filter(button => filterButtons(button, instance.anonymous, instance.data.rid));
const groups = [{items:(instance.small.get() ? buttons : buttons.slice(4)).map(item => {
item.name = TAPi18n.__(item.i18nTitle);
item.action = action;
Expand Down Expand Up @@ -204,34 +209,17 @@ Template.RoomsActionTab.helpers({
if (Template.instance().small.get()) {
return [];
}
const buttons = RocketChat.TabBar.getButtons().filter(button => {
if (!Meteor.userId() && !this.anonymous) {
return false;
}
if (button.groups.indexOf(Template.instance().tabBar.currentGroup()) === -1) {
return false;
}
if (!canShowAddUsersButton(button)) {
return false;
}
return true;
});
const buttons = RocketChat.TabBar.getButtons().filter(button => filterButtons(button, this.anonymous, this.data.rid));
return buttons.length <= 5 ? buttons : buttons.slice(0, 4);
},

moreButtons() {
if (Template.instance().small.get()) {
return true;
}
const buttons = RocketChat.TabBar.getButtons().filter(button => {
if (!Meteor.userId() && !this.anonymous) {
return false;
}
if (button.groups.indexOf(Template.instance().tabBar.currentGroup()) === -1) {
return false;
}
return true;
});
const buttons = RocketChat.TabBar.getButtons().filter(button =>
filterButtons(button, this.anonymous, this.data.rid)
);
return buttons.length > 5;
}
});
33 changes: 33 additions & 0 deletions tests/end-to-end/ui/04-main-elements-render.js
Original file line number Diff line number Diff line change
Expand Up @@ -276,11 +276,19 @@ describe('[Main Elements Render]', function() {

describe('Files Tab:', () => {
before(()=> {
if (flexTab.filesTab.isVisible()) {
this.shouldClose = undefined;
return flexTab.filesTab.click();
}
this.shouldClose = true;
flexTab.moreActions.click();
flexTab.operateFlexTab('files', true);
});

after(()=> {
if (!this.shouldClose) {
return;
}
flexTab.moreActions.click();
flexTab.operateFlexTab('files', false);
});
Expand All @@ -292,12 +300,21 @@ describe('[Main Elements Render]', function() {
});

describe('Mentions Tab:', () => {

before(()=> {
if (flexTab.mentionsTab.isVisible()) {
this.shouldClose = undefined;
return flexTab.mentionsTab.click();
}
this.shouldClose = true;
flexTab.moreActions.click();
flexTab.operateFlexTab('mentions', true);
});

after(()=> {
if (!this.shouldClose) {
return;
}
flexTab.moreActions.click();
flexTab.operateFlexTab('mentions', false);
});
Expand All @@ -309,11 +326,19 @@ describe('[Main Elements Render]', function() {

describe('Starred Messages Tab:', () => {
before(()=> {
if (flexTab.starredTab.isVisible()) {
this.shouldClose = undefined;
return flexTab.starredTab.click();
}
this.shouldClose = true;
flexTab.moreActions.click();
flexTab.operateFlexTab('starred', true);
});

after(()=> {
if (!this.shouldClose) {
return;
}
flexTab.moreActions.click();
flexTab.operateFlexTab('starred', false);
});
Expand All @@ -325,11 +350,19 @@ describe('[Main Elements Render]', function() {

describe('Pinned Messages Tab:', () => {
before(()=> {
if (flexTab.pinnedTab.isVisible()) {
this.shouldClose = undefined;
return flexTab.pinnedTab.click();
}
this.shouldClose = true;
flexTab.moreActions.click();
flexTab.operateFlexTab('pinned', true);
});

after(()=> {
if (!this.shouldClose) {
return;
}
flexTab.moreActions.click();
flexTab.operateFlexTab('pinned', false);
});
Expand Down
8 changes: 4 additions & 4 deletions tests/pageobjects/flex-tab.page.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,23 +53,23 @@ class FlexTab extends Page {
get notificationsSettings() { return browser.element('.push-notifications'); }

// Files Tab
get filesTab() { return browser.element('.rc-popover__item[data-id=uploaded-files-list]'); }
get filesTab() { return browser.element('.rc-popover__item[data-id=uploaded-files-list], .tab-button[data-id=uploaded-files-list]'); }
get fileItem() { return browser.element('.uploaded-files-list ul:first-child'); }
get filesTabContent() { return browser.element('.uploaded-files-list'); }
get fileDelete() { return browser.element('.uploaded-files-list ul:first-child .file-delete'); }
get fileDownload() { return browser.element('.uploaded-files-list ul:first-child .file-download'); }
get fileName() { return browser.element('.uploaded-files-list ul:first-child .room-file-item'); }

// Mentions Tab
get mentionsTab() { return browser.element('.rc-popover__item[data-id=mentions]'); }
get mentionsTab() { return browser.element('.rc-popover__item[data-id=mentions], .tab-button[data-id=mentions]'); }
get mentionsTabContent() { return browser.element('.mentioned-messages-list'); }

// Starred Tab
get starredTab() { return browser.element('.rc-popover__item[data-id=starred-messages]'); }
get starredTab() { return browser.element('.rc-popover__item[data-id=starred-messages], .tab-button[data-id=starred-messages]'); }
get starredTabContent() { return browser.element('.starred-messages-list'); }

// Pinned Tab
get pinnedTab() { return browser.element('.rc-popover__item[data-id=pinned-messages]'); }
get pinnedTab() { return browser.element('.rc-popover__item[data-id=pinned-messages], .tab-button[data-id=pinned-messages]'); }
get pinnedTabContent() { return browser.element('.pinned-messages-list'); }

get firstSetting() { return browser.element('.clearfix li:nth-child(1) .current-setting'); }
Expand Down

0 comments on commit c9ad6ec

Please sign in to comment.