// jscs:disable jsDoc
var _ = require('lodash'),
util = require('../util'),
AppC = require('appc-platform-sdk');
function isAuthenticated(config, authCallback, user, org, callback) {
if (authCallback) {
// if in production and not enabled, return false
if (config.env !== 'development' && !config.enableAdminInProduction) {
return callback(true);
}
authCallback(user, org, callback);
} else {
callback(true);
}
}
function configure(arrow, app, config, prefix, authCallback) {
var CONFIG = {};
CONFIG.env = config && config.env;
CONFIG.devmode = config && config.env === 'development';
CONFIG.prefix = prefix;
CONFIG.dashboard = AppC.baseurl;
CONFIG.enableDataEditor = config && config.enableDataEditor;
app.get(prefix + '/config.js', function (req, resp, next) {
var user = req.query.username,
org = +req.query.org_id;
if (!user || !org) {
// should always be passed, return a 500
return next(new Error('invalid parameters passed'));
}
isAuthenticated(config, authCallback, user, org, function (err) {
try {
CONFIG.authenticated = !err;
var content = JSON.stringify(CONFIG, null, 2),
result = 'var CONFIG = ' + content + ';\n' +
'window.ConfigLoaded && window.ConfigLoaded(CONFIG);';
util.javascript(resp, result);
}
catch (E) {
arrow.logger.error('Error handling admin configure', E);
arrow.logger.trace(E.stack);
next(E);
}
});
});
}
exports.configure = configure;
|