diff --git a/modules/systems/server/config/systems.server.config.js b/modules/systems/server/config/systems.server.config.js new file mode 100644 index 00000000..629c3606 --- /dev/null +++ b/modules/systems/server/config/systems.server.config.js @@ -0,0 +1,14 @@ +'use strict'; + +/** + * Module dependencies + */ +var path = require('path'), + config = require(path.resolve('./config/config')); + +/** + * Module init function. + */ +module.exports = function (app, db) { + +}; diff --git a/modules/systems/server/controllers/systems.server.controller.js b/modules/systems/server/controllers/systems.server.controller.js new file mode 100644 index 00000000..cb2030a8 --- /dev/null +++ b/modules/systems/server/controllers/systems.server.controller.js @@ -0,0 +1,29 @@ +'use strict'; + +/** + * Module dependencies + */ +var path = require('path'), + config = require(path.resolve('./config/config')), + shell = require('shelljs'), + moment = require('moment'), + traceLogCreate = require(path.resolve('./config/lib/tracelog')).create, + scoreUpdate = require(path.resolve('./config/lib/score')).update; + +var traceConfig = config.meanTorrentConfig.trace; +var appConfig = config.meanTorrentConfig.app; +var mtDebug = require(path.resolve('./config/lib/debug')); +var serverMessage = require(path.resolve('./config/lib/server-message')); +var serverNoticeConfig = config.meanTorrentConfig.serverNotice; + +/** + * getSystemConfig + * @param req + * @param res + */ +exports.getSystemConfig = function (req, res) { + var config = shell.cat(path.resolve('./config/env/torrents.js')); + res.json({ + configContent: config + }); +}; diff --git a/modules/systems/server/policies/systems.server.policy.js b/modules/systems/server/policies/systems.server.policy.js new file mode 100644 index 00000000..dc2b48b6 --- /dev/null +++ b/modules/systems/server/policies/systems.server.policy.js @@ -0,0 +1,45 @@ +'use strict'; + +/** + * Module dependencies + */ +var acl = require('acl'); + +// Using the memory backend +acl = new acl(new acl.memoryBackend()); + +/** + * Invoke Articles Permissions + */ +exports.invokeRolesPolicies = function () { + acl.allow([{ + roles: ['admin'], + allows: [ + {resources: '/api/systems/systemConfig', permissions: '*'} + ] + }]); +}; + +/** + * Check If Articles Policy Allows + */ +exports.isAllowed = function (req, res, next) { + var roles = (req.user) ? req.user.roles : ['guest']; + + // Check for user roles + acl.areAnyRolesAllowed(roles, req.route.path, req.method.toLowerCase(), function (err, isAllowed) { + if (err) { + // An authorization error occurred + return res.status(500).send('Unexpected authorization error'); + } else { + if (isAllowed) { + // Access granted! Invoke next middleware + return next(); + } else { + return res.status(403).json({ + message: 'User is not authorized' + }); + } + } + }); +}; diff --git a/modules/systems/server/routes/systems.server.routes.js b/modules/systems/server/routes/systems.server.routes.js new file mode 100644 index 00000000..b27a1c48 --- /dev/null +++ b/modules/systems/server/routes/systems.server.routes.js @@ -0,0 +1,12 @@ +'use strict'; + +/** + * Module dependencies + */ +var systemsPolicy = require('../policies/systems.server.policy'), + systems = require('../controllers/systems.server.controller'); + +module.exports = function (app) { + app.route('/api/systems/systemConfig').all(systemsPolicy.isAllowed) + .get(systems.getSystemConfig); +};