UNPKG

linagora-rse

Version:
51 lines (43 loc) 1.53 kB
const _ = require('lodash'); const esnConfig = require('../../core/esn-config'); module.exports = { requiresModuleIsEnabled, requiresModuleIsEnabledInCurrentDomain }; function requiresModuleIsEnabled(moduleName) { return (req, res, next) => { esnConfig('modules') .inModule('core') .get() .then(modules => { if (!isModuleEnabled(moduleName, modules)) { return res.status(403).json({error: {code: 403, message: 'Forbidden', details: 'Module is not available'}}); } next(); }) .catch(() => { res.status(500).json({error: {code: 500, message: 'Internal Server Error', details: 'Error while resolving user configuration'}}); }); }; } function requiresModuleIsEnabledInCurrentDomain(moduleName) { return (req, res, next) => { esnConfig('modules') .inModule('core') .forUser(req.user) .get() .then(modules => { if (!isModuleEnabled(moduleName, modules)) { return res.status(403).json({error: {code: 403, message: 'Forbidden', details: 'Module is not available'}}); } next(); }) .catch(() => { res.status(500).json({error: {code: 500, message: 'Internal Server Error', details: 'Error while resolving user configuration'}}); }); }; } function isModuleEnabled(moduleName, modules = []) { const moduleConfiguration = _.find(modules, { id: moduleName }) || {}; return _.has(moduleConfiguration, 'enabled') ? moduleConfiguration.enabled : true; }