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

Check permission to invite before showing invite buttons/disable them #2957

Merged
merged 2 commits into from
May 14, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions res/css/views/rooms/_MemberList.scss
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,11 @@ limitations under the License.
}
}

.mx_MemberList_invite.mx_AccessibleButton_disabled {
background-color: grey;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should be a variable for this, and if not, please make one.

cursor: not-allowed;
}

.mx_MemberList_invite span {
background-image: url('$(res)/img/feather-customised/user-add.svg');
background-repeat: no-repeat;
Expand Down
3 changes: 2 additions & 1 deletion src/components/views/rooms/MemberInfo.js
Original file line number Diff line number Diff line change
Expand Up @@ -589,6 +589,7 @@ module.exports = withMatrixClient(React.createClass({

can.kick = me.powerLevel >= powerLevels.kick;
can.ban = me.powerLevel >= powerLevels.ban;
can.invite = me.powerLevel >= powerLevels.invite;
can.mute = me.powerLevel >= editPowerLevel;
can.modifyLevel = me.powerLevel >= editPowerLevel && (isMe || me.powerLevel > them.powerLevel);
can.modifyLevelMax = me.powerLevel;
Expand Down Expand Up @@ -727,7 +728,7 @@ module.exports = withMatrixClient(React.createClass({
);
}

if (!member || !member.membership || member.membership === 'leave') {
if (this.state.can.invite && (!member || !member.membership || member.membership === 'leave')) {
const roomId = member && member.roomId ? member.roomId : RoomViewStore.getRoomId();
const onInviteUserButton = async () => {
try {
Expand Down
15 changes: 14 additions & 1 deletion src/components/views/rooms/MemberList.js
Original file line number Diff line number Diff line change
Expand Up @@ -449,10 +449,23 @@ module.exports = React.createClass({
const cli = MatrixClientPeg.get();
const room = cli.getRoom(this.props.roomId);
let inviteButton;

if (room && room.getMyMembership() === 'join') {
// assume we can invite until proven false
let canInvite = true;

const plEvent = room.currentState.getStateEvents("m.room.power_levels", "");
const me = room.getMember(cli.getUserId());
if (plEvent && me) {
const content = plEvent.getContent();
if (content && content.invite > me.powerLevel) {
canInvite = false;
}
}

const AccessibleButton = sdk.getComponent("elements.AccessibleButton");
inviteButton =
<AccessibleButton className="mx_MemberList_invite" onClick={this.onInviteButtonClick}>
<AccessibleButton className="mx_MemberList_invite" onClick={this.onInviteButtonClick} disabled={!canInvite}>
<span>{ _t('Invite to this room') }</span>
</AccessibleButton>;
}
Expand Down