mirror of
https://github.com/wassname/talk.git
synced 2026-06-28 17:19:36 +08:00
43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
const passport = require('./passport');
|
|
const authentication = require('../middleware/authentication');
|
|
|
|
// 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.
|
|
const deserializeUser = (req) => {
|
|
return new Promise((resolve, reject) => {
|
|
|
|
// This uses the authentication connect middleware to establish the session
|
|
// user details from the headers.
|
|
authentication(req, null, (err) => {
|
|
if (err) {
|
|
return reject(err);
|
|
}
|
|
|
|
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);
|
|
});
|
|
}
|
|
|
|
// Remove the user from the request (if there was one)
|
|
if (req.user) {
|
|
delete req.user;
|
|
}
|
|
|
|
// Resolve with the request (user removed possibly).
|
|
return resolve(req);
|
|
});
|
|
});
|
|
};
|
|
|
|
module.exports = {
|
|
deserializeUser
|
|
};
|