From 49e427229121be3f799e1d05a9cb04cc4dc416be Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期五, 30 八月 2024 15:04:00 +0800
Subject: [PATCH] route guard update

---
 src/permission.ts |  101 +++++++++++++++++++++++++++++---------------------
 1 files changed, 59 insertions(+), 42 deletions(-)

diff --git a/src/permission.ts b/src/permission.ts
index 3dace6d..7f20ed4 100644
--- a/src/permission.ts
+++ b/src/permission.ts
@@ -58,53 +58,70 @@
 
 // 璺敱鍔犺浇鍓�
 router.beforeEach(async (to, from, next) => {
+  console.info("router.beforeEach to: " + to.fullPath + " from: " + from.fullPath)
   start()
   loadStart()
-  if (getAccessToken()) {
-    if (to.path === '/login') {
-      next({ path: '/' })
-    } else {
-      // 鑾峰彇鎵�鏈夊瓧鍏�
-      const dictStore = useDictStoreWithOut()
-      const userStore = useUserStoreWithOut()
-      const permissionStore = usePermissionStoreWithOut()
-      if (!dictStore.getIsSetDict) {
-        await dictStore.setDictMap()
-      }
-      if (!userStore.getIsSetUser) {
-        isRelogin.show = true
-        await userStore.setUserInfoAction()
-        isRelogin.show = false
-        // 鍚庣杩囨护鑿滃崟
-        await permissionStore.generateRoutes()
-        permissionStore.getAddRouters.forEach((route) => {
-          router.addRoute(route as unknown as RouteRecordRaw) // 鍔ㄦ�佹坊鍔犲彲璁块棶璺敱琛�
-        })
-
-        // 鏂板銆愯瘖瀹ら�夋嫨銆戦�昏緫
-        if (userStore.getRoles.includes("doctor") && !userStore.getRoles.includes("super_admin") && !userStore.getIsSetRoom ) {
-          next({path: `/roomselect?redirect=${to.fullPath}`})
-        }
-        // <<<銆愯瘖瀹ら�夋嫨銆�<<<
-        else {
-          const redirectPath = from.query.redirect || to.path
-          // 淇璺宠浆鏃朵笉甯﹀弬鏁扮殑闂
-          const redirect = decodeURIComponent(redirectPath as string)
-          const {paramsObject: query} = parseURL(redirect)
-          const nextData = to.path === redirect ? {...to, replace: true} : {path: redirect, query}
-          next(nextData)
-        }
+  if (!getAccessToken()) {
+      if (whiteList.indexOf(to.path) !== -1) {
+          next()
+          return
       } else {
-        next()
+          next(`/login?redirect=${to.fullPath}`) // 鍚﹀垯鍏ㄩ儴閲嶅畾鍚戝埌鐧诲綍椤�
+          return
       }
-    }
-  } else {
-    if (whiteList.indexOf(to.path) !== -1) {
-      next()
-    } else {
-      next(`/login?redirect=${to.fullPath}`) // 鍚﹀垯鍏ㄩ儴閲嶅畾鍚戝埌鐧诲綍椤�
-    }
   }
+
+  if (to.path === '/login') {
+    next({ path: '/' })
+    return
+  }
+
+  // 鑾峰彇鎵�鏈夊瓧鍏�
+  const dictStore = useDictStoreWithOut()
+  const userStore = useUserStoreWithOut()
+  const permissionStore = usePermissionStoreWithOut()
+  if (!dictStore.getIsSetDict) {
+    await dictStore.setDictMap()
+  }
+
+  if (userStore.getIsSetUser ) {
+
+      // <<<銆愯瘖瀹ら�夋嫨銆�<<<
+      if ( to.path !== '/roomselect' &&
+          userStore.getRoles.includes("doctor") && !userStore.getRoles.includes("super_admin")
+          && !userStore.getIsSetRoom ) {
+          next({path: `/roomselect?redirect=${to.fullPath}`})
+          return
+      }
+
+      next()
+      return
+  }
+
+  isRelogin.show = true
+  await userStore.setUserInfoAction()
+  isRelogin.show = false
+
+  // 鍚庣杩囨护鑿滃崟
+  await permissionStore.generateRoutes()
+  permissionStore.getAddRouters.forEach((route) => {
+    router.addRoute(route as unknown as RouteRecordRaw) // 鍔ㄦ�佹坊鍔犲彲璁块棶璺敱琛�
+  })
+
+  // <<<銆愯瘖瀹ら�夋嫨銆�<<<
+  if ( to.path !== '/roomselect' &&
+      userStore.getRoles.includes("doctor") && !userStore.getRoles.includes("super_admin")
+      && !userStore.getIsSetRoom ) {
+    next({path: `/roomselect?redirect=${to.fullPath}`})
+    return
+  }
+
+  const redirectPath = from.query.redirect || to.path
+  // 淇璺宠浆鏃朵笉甯﹀弬鏁扮殑闂
+  const redirect = decodeURIComponent(redirectPath as string)
+  const {paramsObject: query} = parseURL(redirect)
+  const nextData = to.path === redirect ? {...to, replace: true} : {path: redirect, query}
+  next(nextData)
 })
 
 router.afterEach((to) => {

--
Gitblit v1.9.3