TwoToc code
[YouAndWeb_TwoToc] / server / config / express.js
1 /**
2  * Express configuration
3  */
4
5 'use strict';
6
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');
21
22 module.exports = function(app) {
23   var env = app.get('env');
24
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());
34
35   // Persist sessions with mongoStore / sequelizeStore
36   // We need to enable sessions for passport twitter because its an oauth 1.0 strategy
37   app.use(session({
38     secret: config.secrets.session,
39     resave: true,
40     saveUninitialized: true,
41     store: new mongoStore({
42       mongooseConnection: mongoose.connection,
43       db: 'dashboard'
44     })
45   }));
46
47   app.set('appPath', path.join(config.root, 'client'));
48
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'));
53   }
54
55   if ('development' === env) {
56     app.use(require('connect-livereload')());
57   }
58
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
64   }
65 };