-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathexpress.js
87 lines (78 loc) · 2.75 KB
/
express.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/**
* Express configuration
*/
'use strict';
var express = require('express');
var favicon = require('serve-favicon');
var morgan = require('morgan');
var compression = require('compression');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var cookieParser = require('cookie-parser');
var errorHandler = require('errorhandler');
var path = require('path');
var lusca = require('lusca');
var config = require('./environment');<% if (filters.auth) { %>
var passport = require('passport');<% } %>
var session = require('express-session');<% if (filters.mongoose) { %>
var mongoStore = require('connect-mongo')(session);
var mongoose = require('mongoose');<% } else if(filters.sequelize) { %>
var sqldb = require('../sqldb');
var Store = require('express-sequelize-session')(session.Store);<% } %>
module.exports = function(app) {
var env = app.get('env');
app.set('views', config.root + '/server/views');<% if (filters.html) { %>
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');<% } %><% if (filters.jade) { %>
app.set('view engine', 'jade');<% } %>
app.use(compression());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(methodOverride());
app.use(cookieParser());<% if (filters.auth) { %>
app.use(passport.initialize());<% } %>
// Persist sessions with mongoStore / sequelizeStore
// We need to enable sessions for passport-twitter because it's an
// oauth 1.0 strategy, and Lusca depends on sessions
app.use(session({
secret: config.secrets.session,
resave: true,
saveUninitialized: true<% if (filters.mongoose) { %>,
store: new mongoStore({
mongooseConnection: mongoose.connection,
db: '<%= _.slugify(_.humanize(appname)) %>'
})<% } else if(filters.sequelize) { %>,
store: new Store(sqldb.sequelize)<% } %>
}));
/**
* Lusca - express server security
* https://github.com/krakenjs/lusca
*/
if ('test' !== env) {
app.use(lusca({
csrf: {
angular: true
},
xframe: 'SAMEORIGIN',
hsts: {
maxAge: 31536000, //1 year, in seconds
includeSubDomains: true,
preload: true
},
xssProtection: true
}));
}
app.set('appPath', path.join(config.root, 'client'));
if ('production' === env) {
app.use(favicon(path.join(config.root, 'client', 'favicon.ico')));
app.use(express.static(app.get('appPath')));
app.use(morgan('dev'));
}
if ('development' === env || 'test' === env) {
app.use(require('connect-livereload')());
app.use(express.static(path.join(config.root, '.tmp')));
app.use(express.static(app.get('appPath')));
app.use(morgan('dev'));
app.use(errorHandler()); // Error handler - has to be last
}
};