Files
talk/perms/mutationReducer.js
T
2017-05-16 16:34:04 -06:00

47 lines
1.4 KiB
JavaScript

const intersection = require('lodash/intersection');
const check = (user, roles) => {
return !!intersection(roles, user.roles).length;
};
module.exports = {
CREATE_COMMENT: 'CREATE_COMMENT',
CREATE_ACTION: 'CREATE_ACTION',
DELETE_ACTION: 'DELETE_ACTION',
EDIT_NAME: 'EDIT_NAME',
SET_USER_STATUS: 'SET_USER_STATUS',
SUSPEND_USER: 'SUSPEND_USER',
SET_COMMENT_STATUS: 'SET_COMMENT_STATUS',
ADD_COMMENT_TAG: 'ADD_COMMENT_TAG',
REMOVE_COMMENT_TAG: 'REMOVE_COMMENT_TAG',
UPDATE_USER_ROLES: 'UPDATE_USER_ROLES',
UPDATE_CONFIG: 'UPDATE_CONFIG',
checkRoles: function (user, perm) {
switch (perm) {
case this.CREATE_COMMENT:
return true;
case this.CREATE_ACTION:
return true;
case this.DELETE_ACTION:
return true;
case this.EDIT_NAME:
return true;
case this.UPDATE_USER_ROLES:
return check(user, ['ADMIN']);
case this.SET_USER_STATUS:
return check(user, ['ADMIN', 'MODERATOR']);
case this.SUSPEND_USER:
return check(user, ['ADMIN', 'MODERATOR']);
case this.SET_COMMENT_STATUS:
return check(user, ['ADMIN', 'MODERATOR']);
case this.ADD_COMMENT_TAG:
return check(user, ['ADMIN', 'MODERATOR']);
case this.REMOVE_COMMENT_TAG:
return check(user, ['ADMIN', 'MODERATOR']);
case this.UPDATE_CONFIG:
return check(user, ['ADMIN', 'MODERATOR']);
default:
break;
}
}
};