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