Files
habitica/lib/server/index.js
Tyler Renelle c55ce9d419 use mongo-store in express session (see
4409329271bafd68e931d1d13e5519109a9a3c8e of chat-example)
2012-08-27 10:23:48 -04:00

82 lines
2.2 KiB
JavaScript

// Generated by CoffeeScript 1.3.3
var MongoStore, ONE_YEAR, app, derby, express, expressApp, gzippo, habitrpgMiddleware, http, path, publicPath, racer, root, server, serverError, store;
http = require('http');
path = require('path');
express = require('express');
gzippo = require('gzippo');
derby = require('derby');
app = require('../app');
serverError = require('./serverError');
MongoStore = require('connect-mongo')(express);
racer = require('derby/node_modules/racer');
racer.io.set('transports', ['xhr-polling']);
if (process.env.NODE_ENV !== 'production') {
racer.use(racer.logPlugin);
derby.use(derby.logPlugin);
}
expressApp = express();
server = http.createServer(expressApp);
module.exports = server;
derby.use(require('racer-db-mongo'));
store = derby.createStore({
db: {
type: 'Mongo',
uri: process.env.NODE_DB_URI
},
listen: server
});
ONE_YEAR = 1000 * 60 * 60 * 24 * 365;
root = path.dirname(path.dirname(__dirname));
publicPath = path.join(root, 'public');
habitrpgMiddleware = function(req, res, next) {
var acceptableUid, model, uidParam, _base;
model = req.getModel();
(_base = req.session).userId || (_base.userId = derby.uuid());
uidParam = req.url.split('/')[1];
acceptableUid = require('guid').isGuid(uidParam) || (uidParam === '3' || uidParam === '9');
if (acceptableUid && req.session.userId !== uidParam) {
req.session.userId = uidParam;
}
model.set('_userId', req.session.userId);
model.set('_mobileDevice', /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header('User-Agent')));
model.set('_nodeEnv', process.env.NODE_ENV);
require('./setupStore').accessControl(store);
return next();
};
expressApp.use(express.favicon()).use(gzippo.staticGzip(publicPath, {
maxAge: ONE_YEAR
})).use(express.compress()).use(express.cookieParser()).use(store.sessionMiddleware({
secret: process.env.SESSION_SECRET || 'YOUR SECRET HERE',
cookie: {
maxAge: ONE_YEAR
},
store: new MongoStore({
db: 'habitrpg'
})
})).use(store.modelMiddleware()).use(habitrpgMiddleware).use(app.router()).use(expressApp.router).use(serverError(root));
expressApp.all('*', function(req) {
throw "404: " + req.url;
});