deep-security
Version:
DEEP Security Library
75 lines (61 loc) • 1.52 kB
JavaScript
/**
* Created by CCristi on 7/15/16.
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.RoleVoter = undefined;
var _VoterInterface = require('./VoterInterface');
var _BaseVoter = require('./BaseVoter');
class RoleVoter extends _VoterInterface.VoterInterface {
/**
* @param {Object} role
*/
constructor(role) {
super();
this._role = role;
}
/**
* @param {String} context
* @returns {Boolean}
*/
vote(context) {
for (let voter of this._negativeVoters) {
if (voter.vote(context)) {
return false;
}
}
for (let voter of this._positiveVoters) {
if (voter.vote(context)) {
return true;
}
}
return false;
}
/**
* @returns {String}
*/
get _positiveVoters() {
let statements = this._role.Policy.Statement;
return statements.filter(s => s.Effect === _VoterInterface.VoterInterface.ALLOW).reduce((voters, statement) => {
return voters.concat(statement.Action.map(_BaseVoter.BaseVoter.createFromAction));
}, []);
}
/**
* @returns {String}
*/
get _negativeVoters() {
let statements = this._role.Policy.Statement;
return statements.filter(s => s.Effect === _VoterInterface.VoterInterface.DENY).reduce((voters, statement) => {
return voters.concat(statement.Action.map(_BaseVoter.BaseVoter.createFromAction));
}, []);
}
/**
* @returns {Object}
*/
get role() {
return this._role;
}
}
exports.RoleVoter = RoleVoter;