diff --git a/src/routes/authentication.js b/src/routes/authentication.js index a958bac97b..a15c074806 100644 --- a/src/routes/authentication.js +++ b/src/routes/authentication.js @@ -74,10 +74,16 @@ Auth.reloadRoutes = function (router, callback) { // Trigger registration interstitial checks req.session.registration = req.session.registration || {}; next(); - }, passport.authenticate(strategy.name, { - successReturnToOrRedirect: nconf.get('relative_path') + (strategy.successUrl !== undefined ? strategy.successUrl : '/'), - failureRedirect: nconf.get('relative_path') + (strategy.failureUrl !== undefined ? strategy.failureUrl : '/login'), - })); + }, function (req, res, next) { + let successReturnToOrRedirect = nconf.get('relative_path') + (strategy.successUrl !== undefined ? strategy.successUrl : '/'); + if (req.session && req.session.returnTo) { + successReturnToOrRedirect = req.session.returnTo; + } + passport.authenticate(strategy.name, { + successReturnToOrRedirect: successReturnToOrRedirect, + failureRedirect: nconf.get('relative_path') + (strategy.failureUrl !== undefined ? strategy.failureUrl : '/login'), + })(req, res, next); + }); }); router.post('/register', Auth.middleware.applyCSRF, Auth.middleware.applyBlacklist, controllers.authentication.register);