From e1117bc798cacd90afd7d3b91bcdb49a83e9066b Mon Sep 17 00:00:00 2001 From: qeled Date: Fri, 30 Oct 2015 14:00:30 +0300 Subject: [PATCH] Account everyone overwrite when resolving permissions --- src/Member.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Member.js b/src/Member.js index 949ddf187..4ec7e0743 100644 --- a/src/Member.js +++ b/src/Member.js @@ -66,7 +66,14 @@ class Member extends User{ var affectingOverwrites = []; var affectingMemberOverwrites = []; - + + for(var overwrite of channel.roles) { + if(overwrite.id == this.serverID) { // @everyone for channel + affectingOverwrites.push(overwrite); + break; + } + } + for(var overwrite of channel.roles){ if(overwrite.id === this.id && overwrite.type === "member"){ affectingMemberOverwrites.push(overwrite); @@ -74,14 +81,13 @@ class Member extends User{ affectingOverwrites.push(overwrite); } } - - + if(affectingOverwrites.length === 0 && affectingMemberOverwrites.length === 0){ return this.evalPerms; } var finalPacked = (affectingOverwrites.length !== 0 ? affectingOverwrites[0].packed : affectingMemberOverwrites[0].packed); - + for(var overwrite of affectingOverwrites){ finalPacked = finalPacked & ~overwrite.deny; finalPacked = finalPacked | overwrite.allow;