Add exact and at least role middleware

This commit is contained in:
Elliot DeNolf
2019-01-03 22:55:55 -05:00
parent 96ab6e56ab
commit e6c5857974
4 changed files with 236 additions and 51 deletions

View File

@@ -1,8 +1,24 @@
export default ({
role: (req, res, next) => {
console.log(`Attempted role: ${req.params.role}`);
console.log(`Actual role: ${req.user.role}`);
if (req.params.role === req.user.role) next();
next('route');
const middleware = {
role: (role) => {
return function (req, res, next) {
if (role !== req.user.role) res.send(401, 'Not correct role.');
else next();
}
},
atLeastRole: (roleList, permittedRole) => {
return function(req, res, next) {
let actualRoleIndex = roleList.indexOf(req.user.role);
if (actualRoleIndex === -1) res.status(400).send('Invalid role.');
let permittedRoleIndex = roleList.indexOf(permittedRole);
if (permittedRoleIndex === -1) res.status(500).send();
if (actualRoleIndex <= permittedRoleIndex) next();
res.status(401).send('Role not authorized.');
}
}
})
};
export default middleware;