|
@@ -5,30 +5,22 @@ import {refreshAllDictData} from "@/utils/dictUtils.js";
|
|
|
|
|
|
|
|
|
|
|
|
|
const routes = [
|
|
const routes = [
|
|
|
- {
|
|
|
|
|
- path: '/',
|
|
|
|
|
- redirect: () => {
|
|
|
|
|
- // 判断域名,返回对应路由
|
|
|
|
|
- if (window.location.hostname === 'blockly.learn-ai.com.cn') {
|
|
|
|
|
- return '/blockly-login';
|
|
|
|
|
- } else {
|
|
|
|
|
- return '/login';
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ { path: '/', component: () => import('../views/Login.vue') },
|
|
|
{ path: '/login', component: () => import('../views/Login.vue') },
|
|
{ path: '/login', component: () => import('../views/Login.vue') },
|
|
|
|
|
+
|
|
|
// 免登录
|
|
// 免登录
|
|
|
- { path: '/quick-login', component: () => import('../views/QuickLogin.vue') },
|
|
|
|
|
- { path: '/promotion-login', component: () => import('../views/PromotionLogin.vue') },
|
|
|
|
|
- //【AI实验课】登录
|
|
|
|
|
- { path: '/ai-login', component: () => import('../views/AiCourseLogin.vue') },
|
|
|
|
|
- //【blockly编程课】免租户登录
|
|
|
|
|
- { path: '/blockly-login', meta: {TENANT: '内部测试租户'}, component: () => import('../views/BlocklyLogin.vue') },
|
|
|
|
|
|
|
+ // { path: '/quick-login', component: () => import('../views/QuickLogin.vue') },
|
|
|
|
|
+ // { path: '/promotion-login', component: () => import('../views/PromotionLogin.vue') },
|
|
|
|
|
+ // //【AI实验课】登录
|
|
|
|
|
+ // { path: '/ai-login', component: () => import('../views/AiCourseLogin.vue') },
|
|
|
|
|
+ // //【blockly编程课】免租户登录
|
|
|
|
|
+ // { path: '/blockly-login', meta: {TENANT: '内部测试租户'}, component: () => import('../views/BlocklyLogin.vue') },
|
|
|
// 网页版登录注册页
|
|
// 网页版登录注册页
|
|
|
{
|
|
{
|
|
|
path: '/register-login',
|
|
path: '/register-login',
|
|
|
component: () => import('../views/RegisterLogin.vue')
|
|
component: () => import('../views/RegisterLogin.vue')
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
// 管理界面
|
|
// 管理界面
|
|
|
{
|
|
{
|
|
|
path: '/management-interface',
|
|
path: '/management-interface',
|
|
@@ -198,8 +190,7 @@ const homeRoutes = {
|
|
|
'/ai-grandcanal',
|
|
'/ai-grandcanal',
|
|
|
'/ai-plantexperts',
|
|
'/ai-plantexperts',
|
|
|
'/virtual-laboratory',
|
|
'/virtual-laboratory',
|
|
|
- '/ai-poetry',
|
|
|
|
|
- '/management-interface',
|
|
|
|
|
|
|
+ '/ai-poetry'
|
|
|
]
|
|
]
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -229,14 +220,19 @@ const aiCourseRoutes = {
|
|
|
]
|
|
]
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// 管理界面路由配置
|
|
|
|
|
+const managementRoutes = {
|
|
|
|
|
+ home: '/management-interface',
|
|
|
|
|
+ login: '/login',
|
|
|
|
|
+ role: 'management',
|
|
|
|
|
+ children: [
|
|
|
|
|
+ '/management-interface'
|
|
|
|
|
+ ]
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// 定义登录页面与主页的映射关系
|
|
// 定义登录页面与主页的映射关系
|
|
|
const loginToHomeMap = {
|
|
const loginToHomeMap = {
|
|
|
- '/login': homeRoutes.home,
|
|
|
|
|
- '/quick-login': homeRoutes.home,
|
|
|
|
|
- '/promotion-login': homeRoutes.home,
|
|
|
|
|
- '/blockly-login': blocklyRoutes.home,
|
|
|
|
|
- '/ai-login': aiCourseRoutes.home,
|
|
|
|
|
- '/register-login': homeRoutes.home
|
|
|
|
|
|
|
+ '/login': managementRoutes.home
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const router = createRouter({
|
|
const router = createRouter({
|
|
@@ -247,6 +243,24 @@ const router = createRouter({
|
|
|
// 导航守卫
|
|
// 导航守卫
|
|
|
router.beforeEach(async (to, from, next) => {
|
|
router.beforeEach(async (to, from, next) => {
|
|
|
|
|
|
|
|
|
|
+ // 检查登录状态
|
|
|
|
|
+ const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true'
|
|
|
|
|
+
|
|
|
|
|
+ // 注册页面始终允许访问,不需要登录状态
|
|
|
|
|
+ if (to.path === '/register-login') {
|
|
|
|
|
+ next()
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 允许未登录用户访问的页面列表
|
|
|
|
|
+ const allowedPages = Object.keys(loginToHomeMap)
|
|
|
|
|
+
|
|
|
|
|
+ // 如果未登录且不是允许访问的页面,重定向到登录页
|
|
|
|
|
+ if (!isLoggedIn && !allowedPages.includes(to.path)) {
|
|
|
|
|
+ next('/login')
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (to.path === "/"){
|
|
if (to.path === "/"){
|
|
|
await refreshAllDictData()
|
|
await refreshAllDictData()
|
|
|
await refreshRoleRoute()
|
|
await refreshRoleRoute()
|
|
@@ -263,6 +277,8 @@ router.beforeEach(async (to, from, next) => {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 注册页面已经在前面处理过,这里不需要再处理
|
|
|
|
|
+
|
|
|
// 获取当前登录类型
|
|
// 获取当前登录类型
|
|
|
const loginPath = localStorage.getItem('loginPath')
|
|
const loginPath = localStorage.getItem('loginPath')
|
|
|
|
|
|
|
@@ -276,26 +292,12 @@ router.beforeEach(async (to, from, next) => {
|
|
|
const hasHomePermission = roleRouteSet.includes(homeRoutes.role)
|
|
const hasHomePermission = roleRouteSet.includes(homeRoutes.role)
|
|
|
const hasBlocklyPermission = roleRouteSet.includes(blocklyRoutes.role)
|
|
const hasBlocklyPermission = roleRouteSet.includes(blocklyRoutes.role)
|
|
|
const hasAiCoursePermission = roleRouteSet.includes(aiCourseRoutes.role)
|
|
const hasAiCoursePermission = roleRouteSet.includes(aiCourseRoutes.role)
|
|
|
|
|
+ const hasManagementPermission = true // 管理界面默认允许所有登录用户访问
|
|
|
|
|
|
|
|
- // 如果用户没有当前登录类型对应的权限,切换到用户有权限的主页
|
|
|
|
|
- if (!((allowedHome === homeRoutes.home && hasHomePermission) ||
|
|
|
|
|
- (allowedHome === blocklyRoutes.home && hasBlocklyPermission) ||
|
|
|
|
|
- (allowedHome === aiCourseRoutes.home && hasAiCoursePermission))) {
|
|
|
|
|
- // 找到用户有权限的主页
|
|
|
|
|
- if (hasAiCoursePermission) {
|
|
|
|
|
- allowedHome = aiCourseRoutes.home
|
|
|
|
|
- } else if (hasBlocklyPermission) {
|
|
|
|
|
- allowedHome = blocklyRoutes.home
|
|
|
|
|
- } else if (hasHomePermission) {
|
|
|
|
|
- allowedHome = homeRoutes.home
|
|
|
|
|
- } else {
|
|
|
|
|
- // 如果没有任何权限,可以考虑重定向到登录页面或其他公共页面
|
|
|
|
|
- next(loginPath)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
// 检查目标路由是否在允许的范围内
|
|
// 检查目标路由是否在允许的范围内
|
|
|
- if ((to.path === homeRoutes.home || homeRoutes.children.includes(to.path)) && hasHomePermission) {
|
|
|
|
|
|
|
+ if ((to.path === managementRoutes.home || managementRoutes.children.includes(to.path)) && hasManagementPermission) {
|
|
|
|
|
+ isAllowed = true
|
|
|
|
|
+ } else if ((to.path === homeRoutes.home || homeRoutes.children.includes(to.path)) && hasHomePermission) {
|
|
|
isAllowed = true
|
|
isAllowed = true
|
|
|
} else if ((to.path === blocklyRoutes.home || blocklyRoutes.children.includes(to.path)) && hasBlocklyPermission) {
|
|
} else if ((to.path === blocklyRoutes.home || blocklyRoutes.children.includes(to.path)) && hasBlocklyPermission) {
|
|
|
isAllowed = true
|
|
isAllowed = true
|
|
@@ -306,11 +308,11 @@ router.beforeEach(async (to, from, next) => {
|
|
|
if (isAllowed) {
|
|
if (isAllowed) {
|
|
|
next()
|
|
next()
|
|
|
} else {
|
|
} else {
|
|
|
- // 不允许访问时,重定向到用户有权限的主页
|
|
|
|
|
- if (to.path !== "/")Message().warning('您没有权限访问该页面,已自动切换到您有权限的主页!', true);
|
|
|
|
|
- next(allowedHome)
|
|
|
|
|
|
|
+ // 不允许访问时,重定向到管理界面
|
|
|
|
|
+ if (to.path !== "/")Message().warning('您没有权限访问该页面,已自动切换到管理界面!', true);
|
|
|
|
|
+ next(managementRoutes.home)
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
export default router;
|
|
export default router;
|
|
|
|
|
|
|
|
-export { homeRoutes, blocklyRoutes, aiCourseRoutes };
|
|
|
|
|
|
|
+export { homeRoutes, blocklyRoutes, aiCourseRoutes, managementRoutes };
|