Advertisement
vamsiampolu

Figure this out

Mar 7th, 2015
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Registers a function used to serialize user objects into the session.
  3.  *
  4.  * Examples:
  5.  *
  6.  *     passport.serializeUser(function(user, done) {
  7.  *       done(null, user.id);
  8.  *     });
  9.  *
  10.  * @api public
  11.  */
  12. Authenticator.prototype.serializeUser = function(fn, req, done) {
  13.   if (typeof fn === 'function') {
  14.     return this._serializers.push(fn);
  15.   }
  16.  
  17.   // private implementation that traverses the chain of serializers, attempting
  18.   // to serialize a user
  19.   var user = fn;
  20.  
  21.   // For backwards compatibility
  22.   if (typeof req === 'function') {
  23.     done = req;
  24.     req = undefined;
  25.   }
  26.  
  27.   var stack = this._serializers;
  28.   (function pass(i, err, obj) {
  29.     // serializers use 'pass' as an error to skip processing
  30.     if ('pass' === err) {
  31.       err = undefined;
  32.     }
  33.     // an error or serialized object was obtained, done
  34.     if (err || obj || obj === 0) { return done(err, obj); }
  35.    
  36.     var layer = stack[i];
  37.     if (!layer) {
  38.       return done(new Error('Failed to serialize user into session'));
  39.     }
  40.    
  41.    
  42.     function serialized(e, o) {
  43.       pass(i + 1, e, o);
  44.     }
  45.    
  46.     try {
  47.       var arity = layer.length;
  48.       if (arity == 3) {
  49.         layer(req, user, serialized);
  50.       } else {
  51.         layer(user, serialized);
  52.       }
  53.     } catch(e) {
  54.       return done(e);
  55.     }
  56.   })(0);
  57. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement