feat(api): add custom redirect back
This commit is contained in:
		
				
					committed by
					
						
						mrugesh
					
				
			
			
				
	
			
			
			
						parent
						
							3823ed19bc
						
					
				
				
					commit
					aa62fdbfe9
				
			@@ -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(
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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'],
 | 
			
		||||
 
 | 
			
		||||
@@ -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) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user