From 566135d25b85209f98771adb0dd500f5a7c6a092 Mon Sep 17 00:00:00 2001 From: Gus Caplan Date: Wed, 22 Feb 2017 14:11:11 -0600 Subject: [PATCH] move permission stuff to the resolver (#1185) --- src/client/ClientDataResolver.js | 14 ++++++++++++++ src/structures/Role.js | 12 +++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/client/ClientDataResolver.js b/src/client/ClientDataResolver.js index c6403afd4aaf..ea6fe56f764a 100644 --- a/src/client/ClientDataResolver.js +++ b/src/client/ClientDataResolver.js @@ -217,6 +217,20 @@ class ClientDataResolver { return bitfield; } + hasPermission(bitfield, name, explicit = false) { + const permission = this.resolvePermission(name); + if (!explicit && (bitfield & Constants.PermissionFlags.ADMINISTRATOR) > 0) return true; + return (bitfield & permission) > 0; + } + + serializePermissions(bitfield) { + const serializedPermissions = {}; + for (const name in Constants.PermissionFlags) { + serializedPermissions[name] = this.hasPermission(bitfield, name); + } + return serializedPermissions; + } + /** * Data that can be resolved to give a string. This can be: * * A string diff --git a/src/structures/Role.js b/src/structures/Role.js index e0319d896915..578406cc0cf6 100644 --- a/src/structures/Role.js +++ b/src/structures/Role.js @@ -140,11 +140,7 @@ class Role { * console.log(role.serialize()); */ serialize() { - const serializedPermissions = {}; - for (const permissionName in Constants.PermissionFlags) { - serializedPermissions[permissionName] = this.hasPermission(permissionName); - } - return serializedPermissions; + return this.client.resolver.serializePermissions(this.permissions); } /** @@ -160,10 +156,8 @@ class Role { * console.log('This role can\'t ban members'); * } */ - hasPermission(permission, explicit = false) { - permission = this.client.resolver.resolvePermission(permission); - if (!explicit && (this.permissions & Constants.PermissionFlags.ADMINISTRATOR) > 0) return true; - return (this.permissions & permission) > 0; + hasPermission(permission, explicit) { + return this.client.resolver.hasPermission(this.permissions, permission, explicit); } /**