feat(api): add custom redirect back

This commit is contained in:
Mrugesh Mohapatra
2019-10-21 17:03:00 +05:30
committed by mrugesh
parent 3823ed19bc
commit aa62fdbfe9
9 changed files with 32 additions and 8 deletions

View File

@ -54,8 +54,19 @@ module.exports = function enableAuthentication(app) {
} else {
api.get(
'/signin',
(req, res, next) => {
if (req && req.query && req.query.returnTo) {
req.query.returnTo = `${homeLocation}/${req.query.returnTo}`;
}
return next();
},
ifUserRedirect,
passport.authenticate('auth0-login', {})
(req, res, next) => {
const state = req.query.returnTo
? Buffer.from(req.query.returnTo).toString('base64')
: null;
return passport.authenticate('auth0-login', { state })(req, res, next);
}
);
api.get(

View File

@ -101,6 +101,10 @@ export const createPassportCallbackAuthenticator = (strategy, config) => (
res,
next
) => {
const returnTo =
req && req.query && req.query.state
? Buffer.from(req.query.state, 'base64').toString('utf-8')
: `${homeLocation}/learn`;
return passport.authenticate(
strategy,
{ session: false },
@ -112,7 +116,7 @@ export const createPassportCallbackAuthenticator = (strategy, config) => (
if (!user || !userInfo) {
return res.redirect('/signin');
}
const redirect = `${homeLocation}/learn`;
const redirect = `${returnTo}`;
const { accessToken } = userInfo;
const { provider } = config;

View File

@ -34,6 +34,8 @@ export default {
authPath: '/auth/auth0',
callbackPath: '/auth/auth0/callback',
useCustomCallback: true,
passReqToCallback: true,
state: false,
successRedirect: successRedirect,
failureRedirect: failureRedirect,
scope: ['openid profile email'],

View File

@ -56,10 +56,13 @@ export function ifNotVerifiedRedirectToUpdateEmail(req, res, next) {
}
export function ifUserRedirectTo(path = `${homeLocation}/`, status) {
status = status === 302 ? 302 : 301;
status = status === 301 ? 301 : 302;
return (req, res, next) => {
const { accessToken } = getAccessTokenFromRequest(req);
if (req.user && accessToken) {
if (req.query && req.query.returnTo) {
return res.status(status).redirect(req.query.returnTo);
}
return res.status(status).redirect(path);
}
if (req.user && !accessToken) {