Advertisement
Guest User

Untitled

a guest
Jan 25th, 2015
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. /*
  2. This is just a hacky approach to get things moving, as passport-socketio library
  3. does not support cookie-sessions.
  4. */
  5.  
  6. var Promise = require("bluebird");
  7. var passport = require("passport");
  8. var session = require("cookie-session");
  9.  
  10. var sessionConfig = {
  11. secret: "secret-goes-here",
  12. resave: false,
  13. saveUninitialized: true,
  14. name: "cookie-name-goes-here",
  15. signed: true
  16. };
  17. var configuredSessionMiddleware = session(sessionConfig);
  18.  
  19. var parseCookieSession = function(socket) {
  20. var dummyRequest = {
  21. headers: {
  22. cookie: socket.request.headers.cookie || ''
  23. }
  24. };
  25. var dummyResponse = {};
  26.  
  27. return new Promise(function(resolve, reject){
  28. var passportProperty = passport._key;
  29. var userProperty = passport._userProperty;
  30.  
  31. configuredSessionMiddleware(dummyRequest, dummyResponse, function(error){
  32. if(error) { return reject(error); }
  33. if(!dummyRequest.session[passportProperty]) { return reject("Authentication data not provided"); }
  34. if(!dummyRequest.session[passportProperty][userProperty]) { return reject("User data not provided"); }
  35. var userId = dummyRequest.session[passportProperty][userProperty];
  36. return resolve(userId);
  37. });
  38. });
  39. };
  40.  
  41. var getUserData = function(userId) {
  42. return new Promise(function(resolve, reject){
  43. passport.deserializeUser(userId, function(err, user) {
  44. if (err) { return reject(err);}
  45. if (!user) { return reject("User not found"); }
  46. resolve(user);
  47. });
  48. });
  49. };
  50.  
  51. var assignUserToSocket = function(socket, user)
  52. { socket.request.user = user; };
  53.  
  54. module.exports = function(socket, next) {
  55. Promise.resolve(socket)
  56. .then(parseCookieSession)
  57. .then(getUserData)
  58. .then(function(user) {
  59. assignUserToSocket(socket, user);
  60. })
  61. .then(function() { next(); })
  62. .catch(function(error){
  63. next(new Error('unable to authorise'));
  64. });
  65. };
  66. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement