Просмотр исходного кода

use createRedirectToByUserStatus

Shun Miyazawa 3 лет назад
Родитель
Сommit
b70254d91b

+ 4 - 9
packages/app/src/server/middlewares/login-required.js

@@ -1,3 +1,4 @@
+import { createRedirectToByUserStatus } from '~/server/util/createRedirectToByUserStatus';
 import loggerFactory from '~/utils/logger';
 
 const logger = loggerFactory('growi:middleware:login-required');
@@ -20,15 +21,9 @@ module.exports = (crowi, isGuestAllowed = false, fallback = null) => {
         // Active の人だけ先に進める
         return next();
       }
-      if (req.user.status === User.STATUS_REGISTERED) {
-        return res.redirect('/login/error/registered');
-      }
-      if (req.user.status === User.STATUS_SUSPENDED) {
-        return res.redirect('/login/error/suspended');
-      }
-      if (req.user.status === User.STATUS_INVITED) {
-        return res.redirect('/invited');
-      }
+
+      const redirectTo = createRedirectToByUserStatus(req.user.status) ?? '/';
+      return res.redirect(redirectTo);
     }
 
     // check the route config and ACL

+ 5 - 13
packages/app/src/server/routes/login-passport.js

@@ -6,6 +6,7 @@ import { SupportedAction } from '~/interfaces/activity';
 import { LoginErrorCode } from '~/interfaces/errors/login-error';
 import { ExternalAccountLoginError } from '~/models/vo/external-account-login-error';
 import { NullUsernameToBeRegisteredError } from '~/server/models/errors';
+import { createRedirectToByUserStatus } from '~/server/util/createRedirectToByUserStatus';
 import loggerFactory from '~/utils/logger';
 
 
@@ -16,7 +17,6 @@ module.exports = function(crowi, app) {
   const logger = loggerFactory('growi:routes:login-passport');
   const passport = require('passport');
   const ExternalAccount = crowi.model('ExternalAccount');
-  const User = crowi.model('User');
   const passportService = crowi.passportService;
 
   const activityEvent = crowi.event('activity');
@@ -120,17 +120,8 @@ module.exports = function(crowi, app) {
 
     await crowi.activityService.createActivity(parameters);
 
-
-    let redirectTo = '/';
-    if (req.user.status === User.STATUS_INVITED) {
-      redirectTo = '/invited';
-    }
-    else if (req.user.status !== User.STATUS_ACTIVE) {
-      redirectTo = '/';
-    }
-    else if (res.locals.redirectTo != null) {
-      redirectTo = res.locals.redirectTo;
-    }
+    const redirectToByUserStatus = createRedirectToByUserStatus(req.user.status);
+    const redirectTo = redirectToByUserStatus ?? res.locals.redirectTo ?? '/';
 
     if (isExternalAccount) {
       return res.redirect(redirectTo);
@@ -141,7 +132,8 @@ module.exports = function(crowi, app) {
 
   const injectRedirectTo = (req, res, next) => {
 
-    // Move "req.session.redirectTo" to "res.locals.redirectTo" because the session is regenerated when req.login() is called
+    // Move "req.session.redirectTo" to "res.locals.redirectTo"
+    // Because the session is regenerated when req.login() is called
     const redirectTo = req.session.redirectTo;
     if (redirectTo != null) {
       res.locals.redirectTo = redirectTo;