arrow-admin
Version:
Arrow Admin Website
50 lines (44 loc) • 1.3 kB
JavaScript
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.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 +' ;';
util.javascript(resp, result);
}
catch (E) {
arrow.logger.error("Error handling admin configure",E);
arrow.logger.trace(E.stack);
next(E);
}
});
});
}
exports.configure = configure;