mirror of
https://github.com/wassname/talk.git
synced 2026-06-28 22:04:50 +08:00
39 lines
1.1 KiB
JavaScript
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);
|
|
}
|
|
};
|