153 lines
4.2 KiB
JavaScript
153 lines
4.2 KiB
JavaScript
var Express = require('express');
|
|
var Router = Express.Router();
|
|
var EventEmitter = require('events');
|
|
var RoleModel = require('../models/role');
|
|
var Token = require('../modules/token');
|
|
|
|
function updateRole (req, res, next) {
|
|
Token.verifyThen(req.get('authorization'), 'super', (err, decoded) => {
|
|
if (err) {
|
|
res.status(403).json({ message: 'User not authorized to perform this action.', err: err });
|
|
return;
|
|
}
|
|
|
|
var RoleEvents = new EventEmitter();
|
|
var id = req.params.id;
|
|
var data = req.body;
|
|
|
|
RoleEvents.once('updateRole', (err, result) => {
|
|
if (err) {
|
|
res.status(500).json({message: 'Could not update role id ' + id, err: err});
|
|
}
|
|
|
|
if (result) {
|
|
res.status(200).json(result);
|
|
}
|
|
});
|
|
|
|
RoleModel.updateRole(RoleEvents, id, data);
|
|
});
|
|
}
|
|
|
|
Router.route('/')
|
|
.post((req, res, next) => {
|
|
Token.verifyThen(req.get('authorization'), 'super', (err, decoded) => {
|
|
if (err) {
|
|
res.status(403).json({ message: 'User not authorized to perform this action.', err: err });
|
|
return;
|
|
}
|
|
|
|
var RoleEvents = new EventEmitter();
|
|
var role = req.body;
|
|
|
|
RoleEvents.once('createRole', (err, result) => {
|
|
if (err) {
|
|
res.status(500).json({ message: 'Could not create role', err: err });
|
|
}
|
|
|
|
if (result) {
|
|
res.status(200).json(result);
|
|
}
|
|
});
|
|
|
|
RoleModel.createRole(RoleEvents, role);
|
|
});
|
|
});
|
|
|
|
Router.route('/search/:find?')
|
|
.get((req, res, next) => {
|
|
Token.verifyThen(req.get('authorization'), 'super', (err, decoded) => {
|
|
if (err) {
|
|
res.status(403).json({ message: 'User not authorized to perform this action.', err: err });
|
|
return;
|
|
}
|
|
|
|
var RoleEvents = new EventEmitter();
|
|
|
|
// Process parameters
|
|
var find = req.params.find ? decodeURIComponent(req.params.find) : false;
|
|
|
|
if (find) {
|
|
find = {
|
|
'name': new RegExp(find, 'i')
|
|
};
|
|
}
|
|
|
|
// Setup query object
|
|
var query = {
|
|
find: find || (req.query.find ? JSON.parse(decodeURIComponent(req.query.find)) : {}),
|
|
select: req.query.select ? decodeURIComponent(req.query.select) : null,
|
|
options: {
|
|
limit: req.query.limit ? parseInt(req.query.limit) : 0,
|
|
skip: req.query.ski ? parseInt(req.query.skip) : 0,
|
|
sort: req.query.sort ? JSON.parse(decodeURIComponent(req.query.sort)) : { 'value': 1 }
|
|
}
|
|
};
|
|
|
|
RoleEvents.once('getRoles', (err, result) => {
|
|
if (err) {
|
|
res.status(500).json({ message: 'There was an error performing the role search', err: err });
|
|
}
|
|
|
|
if (result) {
|
|
res.status(200).json(result);
|
|
}
|
|
});
|
|
|
|
RoleModel.getRoles(RoleEvents, query);
|
|
});
|
|
});
|
|
|
|
Router.route('/:id?')
|
|
.get( (req, res, next) => {
|
|
Token.verifyThen(req.get('authorization'), 'view', (err, decoded) => {
|
|
if (err) {
|
|
res.status(403).json({ message: 'User not authorized to perform this action.', err: err });
|
|
return;
|
|
}
|
|
|
|
var RoleEvents = new EventEmitter();
|
|
var id = req.params.id || false;
|
|
var method = id ? 'getRole' : 'getRoles';
|
|
|
|
RoleEvents.once(method, (err, result) => {
|
|
if (err) {
|
|
res.status(500).json({ message: 'Could not get role' + (id ? '' : 's'), err: err });
|
|
}
|
|
|
|
if (result) {
|
|
res.status(200).json(result);
|
|
}
|
|
});
|
|
|
|
RoleModel[method](RoleEvents, id || null);
|
|
});
|
|
})
|
|
.put( updateRole )
|
|
.patch( updateRole )
|
|
.delete( (req, res, next) => {
|
|
Token.verifyThen(req.get('authorization'), 'super', (err, decoded) => {
|
|
if (err) {
|
|
res.status(403).json({ message: 'User not authorized to perform this action.', err: err });
|
|
return;
|
|
}
|
|
|
|
var RoleEvents = new EventEmitter();
|
|
var id = req.params.id;
|
|
|
|
RoleEvents.once('deleteRole', (err, result) => {
|
|
if (err) {
|
|
res.status(500).json({message: 'Could not delete role id ' + id, err: err});
|
|
}
|
|
|
|
if (result) {
|
|
res.status(204).json({});
|
|
}
|
|
});
|
|
|
|
RoleModel.deleteRole(RoleEvents, id);
|
|
});
|
|
});
|
|
|
|
module.exports = Router;
|