2 * Express configuration
7 var express = require('express');
8 var favicon = require('serve-favicon');
9 var morgan = require('morgan');
10 var compression = require('compression');
11 var bodyParser = require('body-parser');
12 var methodOverride = require('method-override');
13 var cookieParser = require('cookie-parser');
14 var errorHandler = require('errorhandler');
15 var path = require('path');
16 var config = require('./environment');
17 var passport = require('passport');
18 var session = require('express-session');
19 var mongoStore = require('connect-mongo')(session);
20 var mongoose = require('mongoose');
22 module.exports = function(app) {
23 var env = app.get('env');
25 app.set('views', config.root + '/server/views');
26 app.engine('html', require('ejs').renderFile);
27 app.set('view engine', 'html');
28 app.use(compression());
29 app.use(bodyParser.urlencoded({ extended: false }));
30 app.use(bodyParser.json());
31 app.use(methodOverride());
32 app.use(cookieParser());
33 app.use(passport.initialize());
35 // Persist sessions with mongoStore / sequelizeStore
36 // We need to enable sessions for passport twitter because its an oauth 1.0 strategy
38 secret: config.secrets.session,
40 saveUninitialized: true,
41 store: new mongoStore({
42 mongooseConnection: mongoose.connection,
47 app.set('appPath', path.join(config.root, 'client'));
49 if ('production' === env) {
50 app.use(favicon(path.join(config.root, 'client', 'favicon.ico')));
51 app.use(express.static(app.get('appPath')));
52 app.use(morgan('dev'));
55 if ('development' === env) {
56 app.use(require('connect-livereload')());
59 if ('development' === env || 'test' === env) {
60 app.use(express.static(path.join(config.root, '.tmp')));
61 app.use(express.static(app.get('appPath')));
62 app.use(morgan('dev'));
63 app.use(errorHandler()); // Error handler - has to be last