this.loadPlugins = function () { var plugins = config.plugins; var path; var pathName; var cfg; for (var pluginName in plugins) { cfg = plugins[pluginName]; pathName = fleegix.string.deCamelize(pluginName); path = config.dirname + '/plugins/' + pathName + '/' + pathName; pluginRegistry[pluginName] = new require(path)[pluginName](cfg); } };
auth.Auth = function (config) { var _this = this; this.authTypes = geddy.config.authTypes; this.htmlRedirect = geddy.config.htmlRedirect || '/'; this.authenticators = {}; this.controller = null; this.func = function (controller, callback) { var authed = false; var list = []; var types = _this.authTypes; var name; var getFunc = function (n) { return _this.authenticators[n].authenticate; }; _this.controller = controller; for (var i = 0; i < types.length; i++) { name = types[i]; list.push({ func: getFunc(name), args: [controller], callback: function (isAuthed) { if (isAuthed) { authed = true; arguments.callee.chain.shortCircuit(true); } }, }); } var chain = new async.AsyncChain(list); chain.last = function () { callback(authed); }; chain.run(); }; this.callback = function (isAuthed) { if (!isAuthed) { arguments.callee.chain.abort(); var params = _this.controller.params; var r = new response.Response(_this.controller.response); if (params.extension == 'html') { _this.controller.redirect(_this.htmlRedirect); } else { var e = new errors.UnauthorizedError('Authentication required.'); r = new response.Response(_this.controller.response); r.send(e.message, e.statusCode, {'Content-Type': 'text/html'}); } } }; var types = this.authTypes; var pathName; var constructorName; var constructor; for (var i = 0; i < types.length; i++) { constructorName = types[i]; pathName = fleegix.string.deCamelize(constructorName); constructor = require(__dirname + '/auth_types/' + pathName)[constructorName]; this.authenticators[constructorName] = new constructor(); } var hookCall = new async.AsyncCall(this.func, null, this.callback); hooks.registerHook('requireAuth', hookCall); };
this.createStore = function (type, callback) { var key = fleegix.string.capitalize(type); var constructor = require('geddy-core/lib/session_stores/' + type)[key]; session.store = new constructor(callback); };