/* global __appdir */ const path = require('path') var db = require(path.join(__appdir, 'lib', 'sequelize')) var requireDirectory = require('require-directory') var data = requireDirectory(module, './modules') updatePermissionDatabase() /* * Update the permission-database accordingly to the permission JSONs */ function updatePermissionDatabase () { var permissionNames = [] for (let module in data) { data[module].forEach(function (permission) { permissionNames.push(module + '.' + permission.name) upsert(db.permission, { name: module + '.' + permission.name, descr: permission.description, groupdependent: permission.groupdependent }, { name: module + '.' + permission.name }) }) } // (Re-)Create Superadmin Permission permissionNames.push('superadmin') upsert(db.permission, { name: 'superadmin', descr: 'Can do anything.', groupdependent: false }, { name: 'superadmin' }) // Delete entries from DB which are not in the JSON files db.permission.destroy( { where: { [db.Op.not]: { name: permissionNames } } } ) } /* * model: * newItem: * where: * * Updates or inserts the given newItem in the given model according to * the where-clause. */ function upsert (model, newItem, where) { return model .findOne({ where: where }) .then(function (foundItem) { if (!foundItem) { return model .create(newItem) .then(function (item) { return { item: item, created: true } }) } return model .update(newItem, { where: where }) .then(function (item) { return { item: item, created: false } }) }) }