Skip to content

Instantly share code, notes, and snippets.

@frostbytten
Created May 17, 2011 20:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save frostbytten/977375 to your computer and use it in GitHub Desktop.
Save frostbytten/977375 to your computer and use it in GitHub Desktop.
Weird Express Middleware issue
var loadCommon = function( req, res, next ) {
var user = req.getAuthDetails().user;
req.age = req.session.age || 0;
req.user = (user === undefined ? false : (user.username || user.email || false));
if(!config.devmode) {
req.authprovider = req.session.authprovider; //LIVE
} else {
req.user = "removeme"; // DEV MODE
req.authprovider = 'twitter'; //DEV MODE
}
next();
},
loginRequired = function( req, res, next ) {
if(config.devmode) {
return next(); // DEV MODE
}
if(! req.user ) {
req.session.nextUrl = req.url;
return res.redirect('/login', 303);
} else {
return next();
}
},
isOfAge = function( req, res, next ) {
if(req.age < 0) {
return next(new Error('You are not of age to use this site.'));
} else {
if(req.age === 0 ) {
req.session.nextUrl = req.url;
return res.redirect('/', 303);
} else {
return next();
}
}
},
basicAuth = express.basicAuth(function( user, pass ) {
var ui = config.testName.indexOf(user);
if( ui !== -1 ) {
return config.testPass[ui] === pass;
} else {
return false;
}
});
var noAuth = [ basicAuth,isOfAge,loadCommon],
authReq = [ basicAuth, loadCommon, isOfAge, loginRequired];
app.get('/', noAuth, function() {
res.end('Something');
});
@frostbytten
Copy link
Author

TypeError: Object function (req, res, next) {
var authorization = req.headers.authorization;

if (req.remoteUser) return next();
if (!authorization) return unauthorized(res, realm);

var parts = authorization.split(' ')
  , scheme = parts[0]
  , credentials = new Buffer(parts[1], 'base64').toString().split(':');

if ('Basic' != scheme) return badRequest(res);

// async
if (callback.length >= 3) {
  var pause = utils.pause(req);
  callback(credentials[0], credentials[1], function(err, user){
    if (err || !user)  return unauthorized(res, realm);
    req.remoteUser = user;
    next();
    pause.resume();
  });
// sync
} else {
  if (callback(credentials[0], credentials[1])) {
    req.remoteUser = credentials[0];
    next();
  } else {
    unauthorized(res, realm);
  }
}

},function ( req, res, next ) {
var user = req.getAuthDetails().user;
req.age = req.session.age || 0;
req.user = (user === undefined ? false : (user.username || user.email || false));
if(!config.devmode) {
req.authprovider = req.session.authprovider; //LIVE
} else {
req.user = "removeme"; // DEV MODE
req.authprovider = 'twitter'; //DEV MODE
}
next();
},function ( req, res, next ) {
if(req.age < 0) {
return next(new Error('You are not of age to use this site.'));
} else {
if(req.age === 0 ) {
req.session.nextUrl = req.url;
return res.redirect('/', 303);
} else {
return next();
}
}
} has no method 'call'
at nextMiddleware (/Users/frostbytten/Development/Projects/gs/wearethedj/node_modules/express/lib/router/index.js:139:34)
at param (/Users/frostbytten/Development/Projects/gs/wearethedj/node_modules/express/lib/router/index.js:147:16)
at pass (/Users/frostbytten/Development/Projects/gs/wearethedj/node_modules/express/lib/router/index.js:155:10)
at Object.router as handle
at next (/Users/frostbytten/Development/Projects/gs/wearethedj/node_modules/connect/lib/http.js:204:15)
at next (/Users/frostbytten/Development/Projects/gs/wearethedj/node_modules/connect/lib/http.js:156:23)
at pass (/Users/frostbytten/Development/Projects/gs/wearethedj/node_modules/connect/lib/middleware/router.js:195:9)
at Object.router as handle
at next (/Users/frostbytten/Development/Projects/gs/wearethedj/node_modules/connect/lib/http.js:204:15)
at pass (/Users/frostbytten/Development/Projects/gs/wearethedj/node_modules/connect/lib/middleware/router.js:195:9)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment