コード例 #1
0
ファイル: app.js プロジェクト: jansplichal/saver
var log4js = require('log4js');

var app = module.exports = koa();
app.keys = ['saver sekret key', 'to sign cookies'];

app.use(helmet.defaults());
app.use(stats(cfg.graphite));
app.use(logger());
app.use(statics(__dirname + '/public'));
app.use(compress());

locale(app);
app.use(i18n(app, {
  directory: './config/locales',
  locales: ['en', 'cs'],
  modes: [
    'query',
    'header'
  ]
}));

app.use(views('views', {
  map: {
    html: 'swig'
  },
  cache: false
}));

app.use(notFound('404.html'));
app.use(errorPage('error.html'));

app.use(
コード例 #2
0
ファイル: index.js プロジェクト: unicorn-it/koa-scaffold
function Scaffold(configs) {

    var settings = _.extend(_.clone(defaults), configs || {});

    var devMode = true;
    if (settings.env === 'production') devMode = false;

    // find `views` and `public` abs path
    var dirs = {};
    dirs.views = finder(configs, 'views');
    dirs.uploads = finder(configs, 'uploads');

    var app = koa();

    app.db = monk(settings.database.name);
    app.keys = ['feedr session'];

    app.use(bodyParser());

    app.use(session(app));

    app.use(passport.initialize());
    app.use(passport.session());

    app.use(views(settings.views, settings.view_options));
    app.use(logger(devMode ? 'dev' : settings.logformat));
    app.use(router(app));
    if(Array.isArray(settings.publics)) {
        for(var i = 0; i < settings.publics.length; i++) {
            app.use(serve(settings.publics[i]));
        }
    }
    else {
        app.use(serve(settings.publics));
    }

    locale(app);

    // expose locals to template engine
    locals(app, {
        sys: pkg,
        site: settings
    });

    app.use(i18n(app, settings.i18n));

    //app.use(errors());

    app.use(function *(next) {
        try {
            yield next;
        } catch (err) {
            console.log(err);
            if(err.status === 401) {
                this.status = 401;
                this.set('WWW-Authenticate', 'Basic');
                this.body = 'Unauthorized request';
            }
            if(!err.status) {
                this.status = 500;
                yield this.render(settings.error['500']);
            }
            else {
                this.status = err.status;
            }
        }

        if(this.status === 200) {
            return;
        }

        if(!this.status) {
            this.status = 404;
        }

        if(this.status === 404) {
            yield this.render(settings.error['404']);
        }
        if(this.status === 500) {
            yield this.render(settings.error['500']);
        }
    });

    //setting language-cookie if f.e. ?lang=de is added to the url
    app.use(function * (next) {

        this.i18n.setLocaleFromQuery(this.request);
        yield next;

        var currentLocale = this.i18n.getLocale();
        this.cookies.set('lang', currentLocale, { signed: true });
    });

    // setup server settings
    var port = _.isNumber(settings.port) ? settings.port : defaults.port;

    this.app = app;
    this.port = port;

    return new Inner(app, port);
}
コード例 #3
0
ファイル: index.js プロジェクト: gaiajs/gaiajs
Gaia.prototype.initMiddleware = function * () {
    debug('Initialize middlewares');
    var self = this,
        config = this.config, //reference to config
        app = this._app;

    if (config.application.session) {
        debug("Init session");
        var session = require('koa-sess');
        app.keys = config.application.session.keys || ['default-session-keys'];
        app.use(session());
    }

    app.use(bodyParser());

    if (config.authentification) {
        debug("Init auth");
        var passport = require('koa-passport');
        injector.register('$passport', passport);

        var auth = injector.processInject(config.authentification);
        yield auth.init();

        app.use(passport.initialize());
        app.use(passport.session());
        this.passport = passport;
    }

    if (config.application.i18n) {
        debug('Init i18n');
        var locale = require('koa-locale')
        locale(app);
    }

    locals(app, {
        __gaia: 'Gaia application'
    });

    if (config.application.i18n) {
        var i18n = require('koa-i18n')
        app.use(i18n(app, config.application.i18n));
    }

    if (config.application.views) {
        debug('init views');
        var views = require('koa-render-locals'),
            viewDir = this._configPath.viewsDir;
        options = config.application.views.options || {};

        app.use(views(viewDir, options));
    }

    app.use(commons.favicon());
    app.use(commons.logger());
    app.use(commons.responseTime());
    app.use(commons.compress());

    app.use(function * (next) {
        if (this.path.indexOf('/public') != 0) return yield next;
        this.path = this.path.substring(7);
        yield send(this, this.path, {
            root: self._configPath.publicDir
        });
    });
};