Advertisement
Guest User

Untitled

a guest
Dec 18th, 2014
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.65 KB | None | 0 0
  1. 'use strict';
  2.  
  3. /**
  4. * Module dependencies.
  5. */
  6. var express = require('express'),
  7. morgan = require('morgan'),
  8. bodyParser = require('body-parser'),
  9. session = require('express-session'),
  10. compress = require('compression'),
  11. methodOverride = require('method-override'),
  12. cookieParser = require('cookie-parser'),
  13. helmet = require('helmet'),
  14. passport = require('passport'),
  15. mongoStore = require('connect-mongo')({
  16. session: session
  17. }),
  18. flash = require('connect-flash'),
  19. config = require('./config'),
  20. consolidate = require('consolidate'),
  21. path = require('path');
  22.  
  23. module.exports = function(db) {
  24. // Initialize express app
  25. var app = express();
  26.  
  27. // Globbing model files
  28. config.getGlobbedFiles('./app/models/**/*.js').forEach(function(modelPath) {
  29. require(path.resolve(modelPath));
  30. });
  31.  
  32. // Setting application local variables
  33. app.locals.title = config.app.title;
  34. app.locals.description = config.app.description;
  35. app.locals.keywords = config.app.keywords;
  36. app.locals.facebookAppId = config.facebook.clientID;
  37. app.locals.jsFiles = config.getJavaScriptAssets();
  38. app.locals.cssFiles = config.getCSSAssets();
  39.  
  40. // Passing the request url to environment locals
  41. app.use(function(req, res, next) {
  42. res.locals.url = req.protocol + '://' + req.headers.host + req.url;
  43. next();
  44. });
  45.  
  46. // Should be placed before express.static
  47. app.use(compress({
  48. filter: function(req, res) {
  49. return (/json|text|javascript|css/).test(res.getHeader('Content-Type'));
  50. },
  51. level: 9
  52. }));
  53.  
  54. // Showing stack errors
  55. app.set('showStackError', true);
  56.  
  57. // Set swig as the template engine
  58. app.engine('server.view.html', consolidate[config.templateEngine]);
  59.  
  60. // Set views path and view engine
  61. app.set('view engine', 'server.view.html');
  62. app.set('views', './app/views');
  63.  
  64. // Environment dependent middleware
  65. if (process.env.NODE_ENV === 'development') {
  66. // Enable logger (morgan)
  67. app.use(morgan('combined'));
  68.  
  69. // Disable views cache
  70. app.set('view cache', false);
  71. } else if (process.env.NODE_ENV === 'production') {
  72. app.locals.cache = 'memory';
  73. }
  74.  
  75. // Request body parsing middleware should be above methodOverride
  76. app.use(bodyParser.urlencoded({
  77. extended: true
  78. }));
  79. app.use(bodyParser.json());
  80. app.use(methodOverride());
  81.  
  82. // Enable jsonp
  83. app.enable('jsonp callback');
  84.  
  85. // CookieParser should be above session
  86. app.use(cookieParser());
  87.  
  88. // Express MongoDB session storage
  89. app.use(session({
  90. saveUninitialized: true,
  91. resave: true,
  92. secret: config.sessionSecret,
  93. store: new mongoStore({
  94. db: db.connection.db,
  95. collection: config.sessionCollection
  96. })
  97. }));
  98.  
  99. // use passport session
  100. app.use(passport.initialize());
  101. app.use(passport.session());
  102.  
  103. // connect flash for flash messages
  104. app.use(flash());
  105.  
  106. // Use helmet to secure Express headers
  107. app.use(helmet.xframe());
  108. app.use(helmet.xssFilter());
  109. app.use(helmet.nosniff());
  110. app.use(helmet.ienoopen());
  111. app.disable('x-powered-by');
  112.  
  113. // Setting the app router and static folder
  114. app.use(express.static(path.resolve('./public')));
  115.  
  116. // Globbing routing files
  117. config.getGlobbedFiles('./app/routes/**/*.js').forEach(function(routePath) {
  118. require(path.resolve(routePath))(app);
  119. });
  120.  
  121. // Assume 'not found' in the error msgs is a 404. this is somewhat silly, but valid, you can do whatever you like, set properties, use instanceof etc.
  122. app.use(function(err, req, res, next) {
  123. // If the error object doesn't exists
  124. if (!err) return next();
  125.  
  126. // Log it
  127. console.error(err.stack);
  128.  
  129. // Error page
  130. res.status(500).render('500', {
  131. error: err.stack
  132. });
  133. });
  134.  
  135. // Assume 404 since no middleware responded
  136. app.use(function(req, res) {
  137. res.status(404).render('404', {
  138. url: req.originalUrl,
  139. error: 'Not Found'
  140. });
  141. });
  142.  
  143. return app;
  144. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement