nforce-express
Version:
nforce middleware for express
52 lines (42 loc) • 1.29 kB
JavaScript
var url = require('url');
module.exports = function(nforce, pluginName) {
// plugin definition
var plugin = nforce.plugin(pluginName || 'express');
plugin.fn('oauth', function(opts){
var self = this;
var matchUrl = url.parse(this.redirectUri);
if(opts.onSuccess && opts.onSuccess.substring(0,1) !== '/') {
opts.onSuccess = '/' + opts.onSuccess;
}
if(opts.onError && opts.onError.substring(0,1) !== '/') {
opts.onError = '/' + opts.onError;
}
// return the middleware
return function(req, res, next) {
if(req.session && req.query.code) {
var url = req.url.replace(/\?.*/i, '').replace(/\/$/, '');
if(matchUrl.pathname == url) {
// its an oauth callback
self.authenticate({ code: req.query.code}, function(err, resp){
if(!err) {
req.session.oauth = resp;
if(opts.onSuccess) {
res.redirect(opts.onSuccess);
} else {
res.redirect('/');
}
} else {
if(opts.onError) {
res.redirect(opts.onError);
} else {
next();
}
}
});
}
} else {
next();
}
};
});
};