* Module dependencies.
*/
-var cookieParser = require('cookie-parser')
- , errorHandler = require('./lib/middleware/errorHandler')
+var errorHandler = require('./lib/middleware/errorHandler')
, express = require('express')
, favicon = require('static-favicon')
, http = require('http')
, session = require('express-session')
, RedisStore = require('connect-redis')(session)
, secret = process.env.SITE_SECRET || 'shhhh, very secret'
+ , cookieParser = require('cookie-parser')(secret)
, site = require('./routes/site')
, urlencoded = require('body-parser').urlencoded
, user = require('./routes/user')
app.use('/static', express.static(pub, {maxAge: 2419200000})); // 4 weeks = 2419200000 ms
app.use(favicon(pub + '/img/favicon.ico', {maxAge: 2419200000}));
app.use(urlencoded());
-app.use(cookieParser(secret));
+app.use(cookieParser);
app.use(session({
cookie: {maxAge: 14400000}, // 4 h = 14400000 ms
rolling: true,
*/
require('./lib/rooms')({
- secret: secret,
+ parser: cookieParser,
server: server,
sessionstore: sessionstore
});
var config = require('../config')
, fs = require('fs')
, minify = require('uglify-js').minify
- , parseCookie = require('cookie-parser/node_modules/cookie').parse
- , parseSignedCookies = require('cookie-parser/lib/parse').signedCookies
, Primus = require('primus')
, primus
, primusemitter = require('primus-emitter')
, primusrooms = require('primus-rooms')
, rooms = require('./rooms').rooms
- , secret
, sessionstore
, sparks = Object.create(null) // Sparks of all rooms
, utils = require('./utils')
*/
module.exports = function(options) {
- secret = options.secret;
sessionstore = options.sessionstore;
// Create Primus instance
},
transformer: 'websockets'
});
-
- // Minify and store the client-side library in the public directory
- var library = minify(primus.library(), {fromString: true});
- fs.writeFileSync(__dirname + '/../public/js/primus.min.js', library.code);
+
+ // Remove unneeded middleware
+ primus.remove('cors');
+ primus.remove('primus.js');
+ primus.remove('spec');
+
+ // Add cookieParser middleware
+ primus.before('cookies', options.parser, 0);
primus.on('connection', connection);
primus.on('joinroom', joinRoom);
console.error(err.stack);
}
});
+
+ // Minify and store the client-side library in the public directory
+ var library = minify(primus.library(), {fromString: true});
+ fs.writeFileSync(__dirname + '/../public/js/primus.min.js', library.code);
+
return {primus: primus, sparks: sparks};
};
*/
var authorize = function(req, authorized) {
- var cookie = req.headers.cookie;
- if(!cookie) {
- var err = new Error('no cookie transmitted');
+ var cookies = req.signedCookies;
+ if (!cookies.hasOwnProperty('connect.sid')) {
+ var err = new Error('connect.sid cookie not transmitted');
console.error(err.message);
return authorized(err);
}
- cookie = parseCookie(cookie);
- cookie = parseSignedCookies(cookie, secret);
- sessionstore.get(cookie['connect.sid'], function(err, session) {
+ sessionstore.get(cookies['connect.sid'], function(err, session) {
if (err || !session) {
err = err || new Error('session not found');
console.error(err.message);
return authorized(err);
}
- req.headers.session = session;
+ req.user = session.user;
authorized();
});
};
*/
var connection = function(spark) {
- var user = spark.headers.session.user;
- delete spark.headers.session;
+ var user = spark.request.user;
spark.on('getoverview', function(callback) {
if (!isFunction(callback)) {
return;