|
@@ -1,5 +1,5 @@
|
|
|
import {createRouter, createWebHashHistory} from 'vue-router'
|
|
import {createRouter, createWebHashHistory} from 'vue-router'
|
|
|
-import {CONFIG} from "@/utils/roleUtils.js";
|
|
|
|
|
|
|
+import {CONFIG, refreshRoleRoute} from "@/utils/roleUtils.js";
|
|
|
import {Message} from "@/utils/message/Message.js";
|
|
import {Message} from "@/utils/message/Message.js";
|
|
|
|
|
|
|
|
|
|
|
|
@@ -199,17 +199,22 @@ const loginToHomeMap = {
|
|
|
'/ai-login': aiCourseRoutes.home
|
|
'/ai-login': aiCourseRoutes.home
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// 从localStorage获取角色路由数据
|
|
|
|
|
-const roleRouteStr = localStorage.getItem(CONFIG.USER_ROLE_ROUTE_KEY)
|
|
|
|
|
-const roleRouteSet = roleRouteStr ? JSON.parse(roleRouteStr) : []
|
|
|
|
|
-
|
|
|
|
|
const router = createRouter({
|
|
const router = createRouter({
|
|
|
history: createWebHashHistory(),
|
|
history: createWebHashHistory(),
|
|
|
routes
|
|
routes
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
// 导航守卫
|
|
// 导航守卫
|
|
|
-router.beforeEach((to, from, next) => {
|
|
|
|
|
|
|
+router.beforeEach(async (to, from, next) => {
|
|
|
|
|
+
|
|
|
|
|
+ if (to.path === "/"){
|
|
|
|
|
+ await refreshRoleRoute()
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 从localStorage获取角色路由数据
|
|
|
|
|
+ const roleRouteStr = localStorage.getItem(CONFIG.USER_ROLE_ROUTE_KEY)
|
|
|
|
|
+ const roleRouteSet = roleRouteStr ? JSON.parse(roleRouteStr) : []
|
|
|
|
|
+
|
|
|
// 如果是登录页面,直接放行并存储登录信息
|
|
// 如果是登录页面,直接放行并存储登录信息
|
|
|
if (Object.keys(loginToHomeMap).includes(to.path)) {
|
|
if (Object.keys(loginToHomeMap).includes(to.path)) {
|
|
|
localStorage.setItem('loginPath', to.path)
|
|
localStorage.setItem('loginPath', to.path)
|
|
@@ -223,12 +228,6 @@ router.beforeEach((to, from, next) => {
|
|
|
// 获取当前登录类型对应的主页
|
|
// 获取当前登录类型对应的主页
|
|
|
let allowedHome = loginToHomeMap[loginPath]
|
|
let allowedHome = loginToHomeMap[loginPath]
|
|
|
|
|
|
|
|
- // 如果没有登录信息,允许访问所有页面(或根据实际需求处理)
|
|
|
|
|
- if (!loginPath || !allowedHome) {
|
|
|
|
|
- next()
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
// 检查目标路由是否在允许的路由范围内
|
|
// 检查目标路由是否在允许的路由范围内
|
|
|
let isAllowed = false
|
|
let isAllowed = false
|
|
|
|
|
|
|
@@ -254,7 +253,6 @@ router.beforeEach((to, from, next) => {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
// 检查目标路由是否在允许的范围内
|
|
// 检查目标路由是否在允许的范围内
|
|
|
if ((to.path === homeRoutes.home || homeRoutes.children.includes(to.path)) && hasHomePermission) {
|
|
if ((to.path === homeRoutes.home || homeRoutes.children.includes(to.path)) && hasHomePermission) {
|
|
|
isAllowed = true
|
|
isAllowed = true
|
|
@@ -268,7 +266,7 @@ router.beforeEach((to, from, next) => {
|
|
|
next()
|
|
next()
|
|
|
} else {
|
|
} else {
|
|
|
// 不允许访问时,重定向到用户有权限的主页
|
|
// 不允许访问时,重定向到用户有权限的主页
|
|
|
- Message().warning('您没有权限访问该页面,已自动切换到您有权限的主页!', true);
|
|
|
|
|
|
|
+ if (to.path !== "/")Message().warning('您没有权限访问该页面,已自动切换到您有权限的主页!', true);
|
|
|
next(allowedHome)
|
|
next(allowedHome)
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|