artsy-passport
Version:
Wires up the common auth handlers for Artsy's [Ezel](ezeljs.com)-based apps using [passport](http://passportjs.org/).
62 lines (54 loc) • 1.53 kB
JavaScript
// Generated by CoffeeScript 1.11.1
(function() {
var _, opts, qs, request;
opts = require('../options');
qs = require('querystring');
request = require('superagent');
_ = require('underscore');
this.headerLogin = function(req, res, next) {
var token;
if (req.path === opts.logoutPath) {
return next();
}
if (token = req.get('X-Access-Token') || req.query.access_token) {
return req.login(new opts.CurrentUser({
accessToken: token
}), next);
} else {
return next();
}
};
this.trustTokenLogin = function(req, res, next) {
var settings, token;
if ((token = req.query.trust_token) == null) {
return next();
}
settings = {
grant_type: 'trust_token',
client_id: opts.ARTSY_ID,
client_secret: opts.ARTSY_SECRET,
code: token
};
return request.post(opts.ARTSY_URL + "/oauth2/access_token").send(settings).end(function(err, response) {
var user;
if ((err != null) || !response.ok) {
return next();
}
user = new opts.CurrentUser({
accessToken: response.body.access_token
});
return req.login(user, function(err) {
var params, path;
if (err != null) {
return next();
}
path = req.url.split('?')[0];
params = _.omit(req.query, 'trust_token');
if (!_.isEmpty(params)) {
path += "?" + (qs.stringify(params));
}
return res.redirect(path);
});
});
};
}).call(this);