mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 10:12:51 +00:00
feat: route permission (#3379)
This commit is contained in:
parent
be6dd24b4b
commit
bba7a60789
|
|
@ -47,6 +47,13 @@ router.beforeEach(
|
|||
if (to.meta.permission ? hasPermission(to.meta.permission as any, 'OR') : true) {
|
||||
next()
|
||||
} else {
|
||||
console.log('s')
|
||||
if (to.meta.get_permission_route) {
|
||||
const t = to.meta.get_permission_route()
|
||||
console.log(t)
|
||||
next(t)
|
||||
return
|
||||
}
|
||||
// 如果没有权限则直接取404页面
|
||||
next({ path: '/no-permission' })
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,25 +2,31 @@ import type { RouteRecordRaw } from 'vue-router'
|
|||
const modules: any = import.meta.glob('./modules/*.ts', { eager: true })
|
||||
import { hasPermission, set_next_route } from '@/utils/permission/index'
|
||||
const rolesRoutes: RouteRecordRaw[] = [...Object.keys(modules).map((key) => modules[key].default)]
|
||||
const get_workspace_permission_route = () => {
|
||||
const route = rolesRoutes.find((route: any) => {
|
||||
return (
|
||||
route.meta?.menu &&
|
||||
(route.meta.permission ? hasPermission(route.meta.permission as any, 'OR') : true)
|
||||
)
|
||||
})
|
||||
if (route?.name) {
|
||||
return { name: route?.name }
|
||||
}
|
||||
return { name: 'noPermission' }
|
||||
}
|
||||
|
||||
export const routes: Array<RouteRecordRaw> = [
|
||||
{
|
||||
path: '/',
|
||||
name: 'home',
|
||||
redirect: (to: any) => {
|
||||
const route = rolesRoutes.find((route: any) => {
|
||||
return (
|
||||
route.meta?.menu &&
|
||||
(route.meta.permission ? hasPermission(route.meta.permission as any, 'OR') : true)
|
||||
)
|
||||
})
|
||||
if (route?.name) {
|
||||
return { name: route?.name }
|
||||
}
|
||||
return { name: 'noPermission' }
|
||||
},
|
||||
redirect: '/application',
|
||||
children: [
|
||||
...rolesRoutes,
|
||||
...rolesRoutes.map((r) => {
|
||||
if (r.meta) {
|
||||
r.meta.get_permission_route = get_workspace_permission_route
|
||||
}
|
||||
return r
|
||||
}),
|
||||
{
|
||||
path: '/no-permission',
|
||||
name: 'noPermission',
|
||||
|
|
|
|||
Loading…
Reference in New Issue