From 8c3e14cd8e33fc64c880663b51ad81d088073f14 Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Mon, 28 Dec 2015 12:41:37 -0800 Subject: [PATCH] Fix commit redirect for non signed user. Now users will be directed to sign in page and on sign in will have pledge completed --- common/models/user.js | 18 ++++++++++++------ server/boot/commit.js | 11 ++++++++--- server/middlewares/add-return-to.js | 5 +++-- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/common/models/user.js b/common/models/user.js index 622d5f73f4..9749fba914 100644 --- a/common/models/user.js +++ b/common/models/user.js @@ -1,6 +1,7 @@ import { Observable } from 'rx'; import uuid from 'node-uuid'; import moment from 'moment'; +import dedent from 'dedent'; import debugFactory from 'debug'; import { saveUser, observeMethod } from '../../server/utils/rx'; @@ -91,9 +92,10 @@ module.exports = function(User) { } req.flash('error', { - msg: - `The ${req.body.email} email address is already associated with an account. - Try signing in with it here instead.` + msg: dedent` + The ${req.body.email} email address is already associated with an account. + Try signing in with it here instead. + ` }); return res.redirect('/email-signin'); @@ -171,10 +173,14 @@ module.exports = function(User) { } return req.logIn({ id: accessToken.userId.toString() }, function(err) { - if (err) { - return next(err); - } + if (err) { return next(err); } + debug('user logged in'); + + if (req.session && req.session.returnTo) { + return res.redirect(req.session.returnTo); + } + req.flash('success', { msg: 'Success! You are logged in.' }); return res.redirect('/'); }); diff --git a/server/boot/commit.js b/server/boot/commit.js index 5e613d65fd..dfa8e9a13f 100644 --- a/server/boot/commit.js +++ b/server/boot/commit.js @@ -22,11 +22,16 @@ import { ifNoUserRedirectTo } from '../utils/middleware'; -const sendNonUserToFront = ifNoUserRedirectTo('/'); +const sendNonUserToSignIn = ifNoUserRedirectTo( + '/login', + 'You must be signed in to commit to a non-profit' +); + const sendNonUserToCommit = ifNoUserRedirectTo( '/commit', - 'Must be signed in to update commit' + 'You must be signed in to update commit' ); + const debug = debugFactory('freecc:commit'); function findNonprofit(name) { @@ -52,7 +57,7 @@ export default function commit(app) { router.get( '/commit/pledge', - sendNonUserToFront, + sendNonUserToSignIn, pledge ); diff --git a/server/middlewares/add-return-to.js b/server/middlewares/add-return-to.js index 6771c38481..920f52eafc 100644 --- a/server/middlewares/add-return-to.js +++ b/server/middlewares/add-return-to.js @@ -16,7 +16,8 @@ const pathsWhiteList = [ 'news', 'challenges', 'map', - 'news' + 'news', + 'commit' ]; const pathsOfNoReturnRegex = new RegExp(pathsOfNoReturn.join('|'), 'i'); @@ -35,7 +36,7 @@ export default function addReturnToUrl() { ) { return next(); } - req.session.returnTo = req.path; + req.session.returnTo = req.originalUrl; next(); }; }