Exemple #1
0
 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);
   }
 };
Exemple #2
0
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);
};
Exemple #3
0
 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);
 };