express-init.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. 'use strict';
  2. module.exports = function(crowi, app) {
  3. var debug = require('debug')('crowi:crowi:express-init')
  4. , express = require('express')
  5. , bodyParser = require('body-parser')
  6. , multer = require('multer')
  7. , cookieParser = require('cookie-parser')
  8. , methodOverride = require('method-override')
  9. , session = require('express-session')
  10. , basicAuth = require('basic-auth-connect')
  11. , flash = require('connect-flash')
  12. , cons = require('consolidate')
  13. , swig = require('swig')
  14. , env = crowi.node_env
  15. , middleware = require('../util/middlewares')
  16. ;
  17. app.use(function(req, res, next) {
  18. var now = new Date()
  19. , baseUrl
  20. , config = crowi.getConfig()
  21. , tzoffset = -(config.crowi['app:timezone'] || 9) * 60 // for datez
  22. , Page = crowi.model('Page')
  23. , User = crowi.model('User')
  24. , Config = crowi.model('Config')
  25. ;
  26. app.set('tzoffset', tzoffset);
  27. req.config = config;
  28. req.csrfToken = null;
  29. config.crowi['app:url'] = baseUrl = (req.headers['x-forwarded-proto'] == 'https' ? 'https' : req.protocol) + '://' + req.get('host');
  30. res.locals.req = req;
  31. res.locals.baseUrl = baseUrl;
  32. res.locals.config = config;
  33. res.locals.env = env;
  34. res.locals.now = now;
  35. res.locals.tzoffset = tzoffset;
  36. res.locals.consts = {
  37. pageGrants: Page.getGrantLabels(),
  38. userStatus: User.getUserStatusLabels(),
  39. registrationMode: Config.getRegistrationModeLabels(),
  40. };
  41. next();
  42. });
  43. // Set basic auth middleware
  44. app.use(function(req, res, next) {
  45. var config = crowi.getConfig();
  46. if (config.crowi['security:basicName'] && config.crowi['security:basicSecret']) {
  47. return basicAuth(
  48. config.crowi['security:basicName'],
  49. config.crowi['security:basicSecret'])(req, res, next);
  50. } else {
  51. next();
  52. }
  53. });
  54. app.set('port', crowi.port);
  55. app.use(express.static(crowi.publicDir));
  56. app.engine('html', cons.swig);
  57. app.set('view cache', false);
  58. app.set('view engine', 'html');
  59. app.set('views', crowi.viewsDir);
  60. app.use(methodOverride());
  61. app.use(bodyParser.urlencoded({ extended: true, limit: '50mb' }));
  62. app.use(bodyParser.json({limit: '50mb'}));
  63. app.use(cookieParser());
  64. app.use(multer());
  65. app.use(session(crowi.sessionConfig));
  66. app.use(flash());
  67. app.use(middleware.swigFilters(app, swig));
  68. app.use(middleware.swigFunctions(crowi, app));
  69. app.use(middleware.loginChecker(crowi, app));
  70. };