UNPKG

artsy-passport

Version:

Wires up the common auth handlers for Artsy's [Ezel](ezeljs.com)-based apps using [passport](http://passportjs.org/).

80 lines (70 loc) 2.38 kB
// Generated by CoffeeScript 1.11.1 (function() { var _, opts, passport, request; _ = require('underscore'); passport = require('passport'); request = require('superagent'); opts = require('../options'); this.ensureEmail = function(req, res, next) { var tmpSuffix; if (req.user == null) { return next(); } tmpSuffix = _.last(opts.twitterSignupTempEmail('').split('@')); if (req.user.get('email').match(tmpSuffix)) { return res.redirect(opts.twitterLastStepPath); } else { return next(); } }; this.login = function(req, res, next) { if (req.user) { return next(); } return passport.authenticate('twitter', { callbackURL: "" + opts.APP_URL + opts.twitterLastStepPath })(req, res, next); }; this.submit = function(req, res, next) { if (!req.user) { return next(new Error("No user")); } if (req.body.email == null) { return next(new Error("No email provided")); } return request.put(opts.ARTSY_URL + "/api/v1/me").send({ email: req.body.email, email_confirmation: req.body.email, access_token: req.user.get('accessToken') }).end(function(err, r) { if (err) { return next(err); } return request.put(opts.ARTSY_URL + "/api/v1/me").send({ access_token: req.user.get('accessToken') }).end(function(err, r) { if (err) { return next(err); } return req.login(req.user.set(r.body), function(err) { if (err) { return next(err); } return res.redirect(opts.afterSignupPagePath); }); }); }); }; this.error = function(err, req, res, next) { var href, msg, ref, ref1; if ((ref = err.text) != null ? ref.match('Error from MailChimp API') : void 0) { return next(); } msg = ((ref1 = err.response.body) != null ? ref1.error : void 0) || err.message || err.toString(); if (msg === 'User Already Exists') { href = opts.logoutPath + "?redirect-to=" + opts.loginPagePath; msg = "An account with this email address already exists. If this is " + "your account please " + "log in to Artsy with your email and password, and link your Twitter account" + "in your settings instead."; } return res.redirect(opts.twitterLastStepPath + '?error=' + msg); }; }).call(this);