From 626c3208b9ef5d2482b4367df20a265973e392ac Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Thu, 29 Oct 2015 15:45:48 +0000 Subject: [PATCH] Fixed permission resolution --- lib/Member.js | 83 +++++++++++++--------------------------- lib/ServerPermissions.js | 2 +- src/Member.js | 18 ++++----- src/ServerPermissions.js | 2 +- test/bot.1.js | 6 ++- 5 files changed, 42 insertions(+), 69 deletions(-) diff --git a/lib/Member.js b/lib/Member.js index faf409442..bc56f9b4f 100644 --- a/lib/Member.js +++ b/lib/Member.js @@ -83,11 +83,15 @@ var Member = (function (_User) { } if (affectingOverwrites.length === 0 && affectingMemberOverwrites.length === 0) { - return new EvaluatedPermissions(this.evalPerms.packed); + return this.evalPerms; } var finalPacked = affectingOverwrites.length !== 0 ? affectingOverwrites[0].packed : affectingMemberOverwrites[0].packed; + console.log(affectingOverwrites); + console.log("\n\n\n"); + console.log(affectingMemberOverwrites); + for (var _iterator3 = affectingOverwrites, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { var _ref3; @@ -103,9 +107,10 @@ var Member = (function (_User) { var overwrite = _ref3; finalPacked = finalPacked & ~overwrite.deny; + finalPacked = finalPacked | overwrite.allow; } - for (var _iterator4 = affectingOverwrites, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + for (var _iterator4 = affectingMemberOverwrites, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { var _ref4; if (_isArray4) { @@ -119,40 +124,7 @@ var Member = (function (_User) { var overwrite = _ref4; - finalPacked = finalPacked | overwrite.allow; - } - - for (var _iterator5 = affectingMemberOverwrites, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { - var _ref5; - - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref5 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref5 = _i5.value; - } - - var overwrite = _ref5; - finalPacked = finalPacked & ~overwrite.deny; - } - - for (var _iterator6 = affectingMemberOverwrites, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { - var _ref6; - - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref6 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref6 = _i6.value; - } - - var overwrite = _ref6; - finalPacked = finalPacked | overwrite.allow; } @@ -170,19 +142,19 @@ var Member = (function (_User) { var ufRoles = [this.server.getRole("id", this.server.id)]; - for (var _iterator7 = this.rawRoles, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { - var _ref7; + for (var _iterator5 = this.rawRoles, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref5; - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref7 = _iterator7[_i7++]; + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref5 = _iterator5[_i5++]; } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref7 = _i7.value; + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref5 = _i5.value; } - var rawRole = _ref7; + var rawRole = _ref5; ufRoles.push(this.server.getRole("id", rawRole)); } @@ -197,26 +169,25 @@ var Member = (function (_User) { basePerm = basePerms[0].packed; basePerms = basePerms || []; - for (var _iterator8 = basePerms, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { - var _ref8; + for (var _iterator6 = basePerms, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref6; - if (_isArray8) { - if (_i8 >= _iterator8.length) break; - _ref8 = _iterator8[_i8++]; + if (_isArray6) { + if (_i6 >= _iterator6.length) break; + _ref6 = _iterator6[_i6++]; } else { - _i8 = _iterator8.next(); - if (_i8.done) break; - _ref8 = _i8.value; + _i6 = _iterator6.next(); + if (_i6.done) break; + _ref6 = _i6.value; } - var perm = _ref8; + var perm = _ref6; basePerm = basePerm | perm.packed; + console.log(perm.name + " - " + perm.mentionEveryone); } - return new ServerPermissions({ - permissions: basePerm - }); + return new EvaluatedPermissions(basePerm); } }]); diff --git a/lib/ServerPermissions.js b/lib/ServerPermissions.js index f67d94560..67cded22c 100644 --- a/lib/ServerPermissions.js +++ b/lib/ServerPermissions.js @@ -18,7 +18,7 @@ var ServerPermissions = (function () { this.position = data.position || 1; this.hoist = data.hoist || false; this.color = data.color || 0; - this.packed = data.permissions || 36953089; + this.packed = data.permissions || (data.name === "@everyone" ? 36953089 : 0); this.name = data.name || "new role"; this.id = data.id || null; this.server = server; diff --git a/src/Member.js b/src/Member.js index bb1e269c2..e7b7bb934 100644 --- a/src/Member.js +++ b/src/Member.js @@ -31,14 +31,14 @@ class Member extends User{ var basePerms = this.roles, //cache roles as it can be slightly expensive basePerm = basePerms[0].packed; + basePerms = basePerms || []; for(var perm of basePerms){ basePerm = basePerm | perm.packed; + console.log(perm.name +" - "+perm.mentionEveryone); } - return new ServerPermissions({ - permissions : basePerm - }); + return new EvaluatedPermissions(basePerm); } removeRole(role){ @@ -78,24 +78,22 @@ class Member extends User{ if(affectingOverwrites.length === 0 && affectingMemberOverwrites.length === 0){ - return new EvaluatedPermissions(this.evalPerms.packed); + return this.evalPerms; } var finalPacked = (affectingOverwrites.length !== 0 ? affectingOverwrites[0].packed : affectingMemberOverwrites[0].packed); - for(var overwrite of affectingOverwrites){ - finalPacked = finalPacked & ~overwrite.deny; - } + console.log(affectingOverwrites); + console.log("\n\n\n"); + console.log(affectingMemberOverwrites); for(var overwrite of affectingOverwrites){ + finalPacked = finalPacked & ~overwrite.deny; finalPacked = finalPacked | overwrite.allow; } for(var overwrite of affectingMemberOverwrites){ finalPacked = finalPacked & ~overwrite.deny; - } - - for(var overwrite of affectingMemberOverwrites){ finalPacked = finalPacked | overwrite.allow; } diff --git a/src/ServerPermissions.js b/src/ServerPermissions.js index 5152b5ffd..10de0401a 100644 --- a/src/ServerPermissions.js +++ b/src/ServerPermissions.js @@ -12,7 +12,7 @@ class ServerPermissions { this.position = data.position || 1; this.hoist = data.hoist || false; this.color = data.color || 0; - this.packed = data.permissions || 36953089; + this.packed = data.permissions || (data.name === "@everyone" ? 36953089 : 0)); this.name = data.name || "new role"; this.id = data.id || null; this.server = server; diff --git a/test/bot.1.js b/test/bot.1.js index 7a898f429..dab1a0e15 100644 --- a/test/bot.1.js +++ b/test/bot.1.js @@ -26,7 +26,11 @@ mybot.on("message", function (message) { user = message.sender; } - mybot.reply(message, JSON.stringify(message.sender.permissionsIn(message.channel), null, 4)); + mybot.getChannelLogs(message.channel, 5000).then((messages)=>{ + for(var msg of messages){ + mybot.deleteMessage(msg); + } + }) }); mybot.once("ready", function () {