Files
talk/services/subscriptions.js
T
David Erwin 48b7a67665 Add comments
2017-04-05 11:24:52 -04:00

39 lines
1.1 KiB
JavaScript

const {createSubscriptionManager} = require('../graph');
const session = require('./session');
const passport = require('./passport');
module.exports = class Subscriptions {
// Session data does not automatically attach to websocket req objects.
// This middleware code looks for a user in the session and, if it exists,
// attaches it to the graph req.
static deserializeUser(req) {
return new Promise((resolve, reject) => {
session(req, {}, () => {
if ('session' in req && 'passport' in req.session && 'user' in req.session.passport) {
passport.deserializeUser(req.session.passport.user, (err, user) => {
if (err) {
return reject(err);
}
req.user = user;
return resolve(req);
});
} else {
resolve(req);
}
});
});
}
static mount(server) {
// Create the SubscriptionManager and mount it on the specified route with
// this deserializer.
createSubscriptionManager(server, '/api/v1/live', Subscriptions.deserializeUser);
}
};