Overhaul Permissions utilities (EvaluatedPermissions no more)

This commit is contained in:
Schuyler Cebulskie
2017-03-06 02:22:42 -05:00
parent 055775de2f
commit 16fe48d405
11 changed files with 280 additions and 212 deletions

View File

@@ -1,8 +1,7 @@
const Channel = require('./Channel');
const Role = require('./Role');
const PermissionOverwrites = require('./PermissionOverwrites');
const EvaluatedPermissions = require('./EvaluatedPermissions');
const Constants = require('../util/Constants');
const Permissions = require('../util/Permissions');
const Collection = require('../util/Collection');
/**
@@ -51,12 +50,12 @@ class GuildChannel extends Channel {
* Gets the overall set of permissions for a user in this channel, taking into account roles and permission
* overwrites.
* @param {GuildMemberResolvable} member The user that you want to obtain the overall permissions for
* @returns {?EvaluatedPermissions}
* @returns {?Permissions}
*/
permissionsFor(member) {
member = this.client.resolver.resolveGuildMember(this.guild, member);
if (!member) return null;
if (member.id === this.guild.ownerID) return new EvaluatedPermissions(member, Constants.ALL_PERMISSIONS);
if (member.id === this.guild.ownerID) return new Permissions(member, Permissions.ALL);
let permissions = 0;
@@ -71,10 +70,10 @@ class GuildChannel extends Channel {
}
permissions |= allow;
const admin = Boolean(permissions & Constants.PermissionFlags.ADMINISTRATOR);
if (admin) permissions = Constants.ALL_PERMISSIONS;
const admin = Boolean(permissions & Permissions.FLAGS.ADMINISTRATOR);
if (admin) permissions = Permissions.ALL;
return new EvaluatedPermissions(member, permissions);
return new Permissions(member, permissions);
}
overwritesFor(member, verified = false, roles = null) {
@@ -151,14 +150,14 @@ class GuildChannel extends Channel {
for (const perm in options) {
if (options[perm] === true) {
payload.allow |= Constants.PermissionFlags[perm] || 0;
payload.deny &= ~(Constants.PermissionFlags[perm] || 0);
payload.allow |= Permissions.FLAGS[perm] || 0;
payload.deny &= ~(Permissions.FLAGS[perm] || 0);
} else if (options[perm] === false) {
payload.allow &= ~(Constants.PermissionFlags[perm] || 0);
payload.deny |= Constants.PermissionFlags[perm] || 0;
payload.allow &= ~(Permissions.FLAGS[perm] || 0);
payload.deny |= Permissions.FLAGS[perm] || 0;
} else if (options[perm] === null) {
payload.allow &= ~(Constants.PermissionFlags[perm] || 0);
payload.deny &= ~(Constants.PermissionFlags[perm] || 0);
payload.allow &= ~(Permissions.FLAGS[perm] || 0);
payload.deny &= ~(Permissions.FLAGS[perm] || 0);
}
}
@@ -294,7 +293,7 @@ class GuildChannel extends Channel {
*/
get deletable() {
return this.id !== this.guild.id &&
this.permissionsFor(this.client.user).hasPermission(Constants.PermissionFlags.MANAGE_CHANNELS);
this.permissionsFor(this.client.user).hasPermission(Permissions.FLAGS.MANAGE_CHANNELS);
}
/**