Skip to content

Instantly share code, notes, and snippets.

@godfreyd
Created May 23, 2017 07:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save godfreyd/fdc6e2d7f1f42deac4dcfc0dde36bd11 to your computer and use it in GitHub Desktop.
Save godfreyd/fdc6e2d7f1f42deac4dcfc0dde36bd11 to your computer and use it in GitHub Desktop.
Object.assign || (Object.assign = require('object-assign'));
var fs = require('fs'),
path = require('path'),
express = require('express'),
app = express(),
bodyParser = require('body-parser'),
favicon = require('serve-favicon'),
morgan = require('morgan'),
serveStatic = require('serve-static'),
cookieParser = require('cookie-parser'),
expressSession = require('express-session'),
slashes = require('connect-slashes'),
passport = require('passport'),
// LocalStrategy = require('passport-local').Strategy,
csrf = require('csurf'),
compression = require('compression'),
config = require('./config'),
staticFolder = config.staticFolder,
Render = require('./render'),
render = Render.render,
dropCache = Render.dropCache, // eslint-disable-line no-unused-vars
port = process.env.PORT || config.defaultPort,
isSocket = isNaN(port),
isDev = process.env.NODE_ENV === 'development';
require('debug-http')();
app
.disable('x-powered-by')
.enable('trust proxy')
.use(compression())
.use(favicon(path.join(staticFolder, '/images/favicon.ico')))
.use(serveStatic(staticFolder))
.use(morgan('combined'))
.use(cookieParser())
.use(bodyParser.urlencoded({ extended: true }))
.use(expressSession({
resave: true,
saveUninitialized: true,
secret: config.sessionSecret
}))
.use(passport.initialize())
.use(passport.session())
.use(csrf());
// NOTE: conflicts with livereload
isDev || app.use(slashes());
passport.serializeUser(function(user, done) {
done(null, JSON.stringify(user));
});
passport.deserializeUser(function(user, done) {
done(null, JSON.parse(user));
});
app.get('/ping/', function(req, res) {
res.send('ok');
});
app.get('/', function(req, res) {
var hello = 'Hello';
var world = 'World';
render(req, res, {
view: 'page-index',
title: 'Main page',
meta: {
description: 'Page description',
og: {
url: 'https://site.com',
siteName: 'Site name'
}
},
hello: hello,
world: world
})
});
isDev && require('./rebuild')(app);
app.get('*', function(req, res) {
res.status(404);
return render(req, res, { view: '404' });
});
if (isDev) {
app.get('/error/', function() {
throw new Error('Uncaught exception from /error');
});
app.use(require('errorhandler')());
}
isSocket && fs.existsSync(port) && fs.unlinkSync(port);
app.listen(port, function() {
isSocket && fs.chmod(port, '0777');
console.log('server is listening on', this.address().port);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment