Created Role class and permission evaluation within Roles

This commit is contained in:
hydrabolt
2016-04-17 15:03:23 +01:00
parent 30f5e2943a
commit 4de1f4ce99
4 changed files with 92 additions and 4 deletions

52
src/structures/Role.js Normal file
View File

@@ -0,0 +1,52 @@
'use strict';
const Constants = require('../Util/Constants');
class Role {
constructor(guild, data) {
this.guild = guild;
this.client = guild.client;
if (data) {
this.setup(data);
}
}
setup(data) {
this.id = data.id;
this.name = data.name;
this.color = data.color;
this.hoist = data.hoist;
this.position = data.position;
this.permissions = data.permissions;
this.managed = data.managed;
}
serialize() {
let serializedPermissions = {};
for (let permissionName in Constants.PermissionFlags) {
serializedPermissions[permissionName] = this.hasPermission(permissionName);
}
return serializedPermissions;
}
hasPermission(permission, explicit) {
if (permission instanceof String || typeof permission === 'string') {
permission = Constants.PermissionFlags[permission];
}
if (!permission) {
throw Constants.Errors.NOT_A_PERMISSION;
}
if (!explicit) {
if ((this.permissions & Constants.PermissionFlags.MANAGE_ROLES) > 0) {
return true;
}
}
return ((this.permissions & permission) > 0);
}
}
module.exports = Role;