Fixed PermissionOverwrites

This commit is contained in:
hydrabolt
2015-10-31 20:31:05 +00:00
parent 6064888f21
commit c5e5ab54db
15 changed files with 584 additions and 12 deletions

View File

@@ -0,0 +1,70 @@
"use strict";
var Permissions = require("../Constants.js").Permissions;
class PermissionOverwrite {
constructor(data) {
this.id = data.id;
this.type = data.type; // member or role
this.deny = data.deny;
this.allow = data.allow;
}
// returns an array of allowed permissions
get allowed(){
var allowed = [];
for( var permName in Permissions ){
if(permName === "manageRoles" || permName === "manageChannels"){
// these permissions do not exist in overwrites.
continue;
}
if(!!(this.allow & Permissions[permName])){
allowed.push(permName);
}
}
return allowed;
}
// returns an array of denied permissions
get denied(){
var denied = [];
for( var permName in Permissions ){
if(permName === "manageRoles" || permName === "manageChannels"){
// these permissions do not exist in overwrites.
continue;
}
if(!!(this.deny & Permissions[permName])){
denied.push(permName);
}
}
return denied;
}
setAllowed(allowedArray){
allowedArray.forEach( (permission) => {
if(permission instanceof String || typeof permission === "string"){
permission = Permissions[permission];
}
if(permission){
this.allow |= (1 << permission);
}
} );
}
setDenied(deniedArray){
deniedArray.forEach( (permission) => {
if(permission instanceof String || typeof permission === "string"){
permission = Permissions[permission];
}
if(permission){
this.deny |= (1 << permission);
}
} );
}
}
module.exports = PermissionOverwrite;