Browse Source

fix: loginRedirect doesn't work for non local strategies (#3222)

PaulD987 4 years ago
parent
commit
3f001dca2c
1 changed files with 13 additions and 1 deletions
  1. 13 1
      server/controllers/auth.js

+ 13 - 1
server/controllers/auth.js

@@ -71,7 +71,19 @@ router.all('/login/:strategy/callback', async (req, res, next) => {
       strategy: req.params.strategy
     }, { req, res })
     res.cookie('jwt', authResult.jwt, { expires: moment().add(1, 'y').toDate() })
-    res.redirect(authResult.redirect)
+
+    const loginRedirect = req.cookies['loginRedirect']
+    if (loginRedirect === '/' && authResult.redirect) {
+      res.clearCookie('loginRedirect')
+      res.redirect(authResult.redirect)
+    } else if (loginRedirect) {
+      res.clearCookie('loginRedirect')
+      res.redirect(loginRedirect)
+    } else if (authResult.redirect) {
+      res.redirect(authResult.redirect)
+    } else {
+      res.redirect('/')
+    }
   } catch (err) {
     next(err)
   }