Added Permission evaluation for channels and EvaluatedPermissions class.

This commit is contained in:
hydrabolt
2016-04-18 19:31:36 +01:00
parent 00327a5776
commit da42b422f0
8 changed files with 200 additions and 2 deletions

View File

@@ -0,0 +1,39 @@
'use strict';
const Constants = require('../Util/Constants');
class EvaluatedPermissions {
constructor(member, permissions) {
this.member = member;
this.permissions = permissions;
}
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 = EvaluatedPermissions;