app/index.js

/**
 * Application
 * @module
 */

var cookieParser = require('cookie-parser');
var express = require('express');
var expressSession = require('express-session');
var compression = require('compression');
var morgan = require('app/lib/morgan');
var passport = require('app/lib/passport');
var routers = require('app/routers');
var sessionConfig = require('app/config/session');

var app = express();

app.use(cookieParser());
app.use(express.static(__dirname + '/public'));
app.use(compression());
app.use(morgan('App processed request'));
app.use(expressSession({
  secret: sessionConfig.secret,
  store: sessionConfig.store,
  resave: false,
  saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());

if (!process.env.SYNC_SERVER_HOST) {
  throw new Error('App failed to find host variable from environment');
}

app.host = 'https://' + process.env.SYNC_SERVER_HOST + ':' + process.env.SYNC_SERVER_PORT;

if (!process.env.SYNC_SERVER_PORT) {
  throw new Error('App failed to find port variable from environment');
}

app.port = process.env.SYNC_SERVER_PORT;

app.requireAdminAuthentication = function(req, res, next) {
  if (!req.user || !req.user.id || !req.user.admin) {
    res.status(403).send('403 Forbidden');
  } else {
    next();
  }
};

app.requireAuthentication = function(req, res, next) {
  if (typeof req.user === 'undefined') {
    res.status(403).send('403 Forbidden');
  } else {
    next();
  }
};

module.exports = app;

routers(app);