Files
looking-monorepo/routes/roles.js
2018-03-02 03:00:51 -05:00

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;