Browse Source

fix: successful login should not take you to the login page (#4056)

* fix: successful login should not take you to the login page

* chore: use DEFAULT_HOME_PATH constants

* chore: remove invalid spaces in script

* fix: lint error
Donny Wang 7 months ago
parent
commit
e27be2d47a

+ 13 - 7
apps/web-antd/src/router/guard.ts

@@ -1,6 +1,6 @@
 import type { Router } from 'vue-router';
 
-import { LOGIN_PATH } from '@vben/constants';
+import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants';
 import { preferences } from '@vben/preferences';
 import { useAccessStore, useUserStore } from '@vben/stores';
 import { startProgress, stopProgress } from '@vben/utils';
@@ -62,14 +62,20 @@ function setupAccessGuard(router: Router) {
     const userStore = useUserStore();
     const authStore = useAuthStore();
 
+    // 基本路由,这些路由不需要进入权限拦截
+    if (coreRouteNames.includes(to.name as string)) {
+      if (to.path === LOGIN_PATH && accessStore.accessToken) {
+        return decodeURIComponent(
+          (to.query?.redirect as string) || DEFAULT_HOME_PATH,
+        );
+      }
+      return true;
+    }
+
     // accessToken 检查
     if (!accessStore.accessToken) {
-      if (
-        // 基本路由,这些路由不需要进入权限拦截
-        coreRouteNames.includes(to.name as string) ||
-        // 明确声明忽略权限访问权限,则可以访问
-        to.meta.ignoreAccess
-      ) {
+      // 明确声明忽略权限访问权限,则可以访问
+      if (to.meta.ignoreAccess) {
         return true;
       }
 

+ 13 - 7
apps/web-ele/src/router/guard.ts

@@ -1,6 +1,6 @@
 import type { Router } from 'vue-router';
 
-import { LOGIN_PATH } from '@vben/constants';
+import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants';
 import { preferences } from '@vben/preferences';
 import { useAccessStore, useUserStore } from '@vben/stores';
 import { startProgress, stopProgress } from '@vben/utils';
@@ -62,14 +62,20 @@ function setupAccessGuard(router: Router) {
     const userStore = useUserStore();
     const authStore = useAuthStore();
 
+    // 基本路由,这些路由不需要进入权限拦截
+    if (coreRouteNames.includes(to.name as string)) {
+      if (to.path === LOGIN_PATH && accessStore.accessToken) {
+        return decodeURIComponent(
+          (to.query?.redirect as string) || DEFAULT_HOME_PATH,
+        );
+      }
+      return true;
+    }
+
     // accessToken 检查
     if (!accessStore.accessToken) {
-      if (
-        // 基本路由,这些路由不需要进入权限拦截
-        coreRouteNames.includes(to.name as string) ||
-        // 明确声明忽略权限访问权限,则可以访问
-        to.meta.ignoreAccess
-      ) {
+      // 明确声明忽略权限访问权限,则可以访问
+      if (to.meta.ignoreAccess) {
         return true;
       }
 

+ 13 - 7
apps/web-naive/src/router/guard.ts

@@ -1,6 +1,6 @@
 import type { Router } from 'vue-router';
 
-import { LOGIN_PATH } from '@vben/constants';
+import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants';
 import { preferences } from '@vben/preferences';
 import { useAccessStore, useUserStore } from '@vben/stores';
 import { startProgress, stopProgress } from '@vben/utils';
@@ -62,14 +62,20 @@ function setupAccessGuard(router: Router) {
     const userStore = useUserStore();
     const authStore = useAuthStore();
 
+    // 基本路由,这些路由不需要进入权限拦截
+    if (coreRouteNames.includes(to.name as string)) {
+      if (to.path === LOGIN_PATH && accessStore.accessToken) {
+        return decodeURIComponent(
+          (to.query?.redirect as string) || DEFAULT_HOME_PATH,
+        );
+      }
+      return true;
+    }
+
     // accessToken 检查
     if (!accessStore.accessToken) {
-      if (
-        // 基本路由,这些路由不需要进入权限拦截
-        coreRouteNames.includes(to.name as string) ||
-        // 明确声明忽略权限访问权限,则可以访问
-        to.meta.ignoreAccess
-      ) {
+      // 明确声明忽略权限访问权限,则可以访问
+      if (to.meta.ignoreAccess) {
         return true;
       }
 

+ 1 - 1
package.json

@@ -51,7 +51,7 @@
     "publint": "vsh publint",
     "reinstall": "pnpm clean --del-lock && pnpm bootstrap",
     "test:unit": "vitest",
-    "update:deps": " pnpm update --latest --recursive",
+    "update:deps": "pnpm update --latest --recursive",
     "version": "pnpm exec changeset version && pnpm install --no-frozen-lockfile"
   },
   "devDependencies": {