/* global __appdir */ var path = require('path') var db = require(path.join(__appdir, 'lib', 'sequelize')) // GET requests module.exports.get = { /* * ?id= * * @return: Returns the information about a role and it's permissions and groups. */ getRoleById: function (req, res) { db.role.findOne({ where: { id: req.query.id }, include: ['permissions', 'groups'] }).then(role => { if (role) res.send(role) else res.status(404).end() }) }, /* * @return: Returns a list of all roles in the database. */ getRoleList: function (req, res) { db.role.findAll({ attributes: ['id', 'name', 'descr'] }).then(function (roles) { res.status(200).send(roles) }) }, /* * @return: Returns a list of all permissions in the database. */ getPermissionList: function (req, res) { db.permission.findAll().then(function (permissions) { res.status(200).send(permissions) }) } } // POST requests module.exports.post = { /* * id: * * Deletes the role to the given id. */ deleteRoles: function (req, res) { const roleIds = req.body.id db.role.destroy({ where: { id: roleIds } }).then(function () { res.status(200).send('success') }) }, /* * id: * name: * descr: * permissions: * groups: , * recursiveMode: < RECURSIVE_MODE> * * Creates or updates a role. If recursiveMode is set to true, the are saved with childs. */ saveRole: function (req, res) { const role = req.body if (role.id === 0) { // Insert new role in the db. db.role.create({ name: role.name, descr: role.descr, recursiveGroups: role.recursiveMode }).then(roleDb => { var promises = [] promises.push(roleDb.addPermissions(role.permissions)) promises.push(roleDb.addGroups(role.groups)) Promise.all(promises).then(() => { res.send({ id: role.id }) }) }) } else { // Update an existing role in the db. db.role.findOne({ where: { id: role.id } }).then(roleDb => { var promises = [] promises.push(roleDb.update({ name: role.name, descr: role.descr, recursiveGroups: role.recursiveMode })) promises.push(roleDb.setPermissions(role.permissions)) promises.push(roleDb.setGroups(role.groups)) Promise.all(promises).then(() => { res.send({ id: role.id }) }) }) } } }