feat:动态权限

This commit is contained in:
JaguarJack
2022-12-10 18:29:42 +08:00
parent 8c537e6656
commit c4270a2fc8
46 changed files with 948 additions and 177 deletions

View File

@@ -1,9 +1,16 @@
import { RouteRecordRaw } from 'vue-router'
// @ts-ignore
const modules = import.meta.glob('@/module/**/views/router.ts', { eager: true })
let moduleRoutes: RouteRecordRaw[] = []
export function getModuleRoutes() {
const modules = import.meta.glob('@/module/**/views/router.ts', { eager: true })
let moduleRoutes: RouteRecordRaw[] = []
Object.keys(modules).forEach(routePath => {
moduleRoutes = moduleRoutes.concat(modules[routePath].default)
})
export default moduleRoutes
Object.keys(modules).forEach(routePath => {
moduleRoutes = moduleRoutes.concat(modules[routePath].default)
})
return moduleRoutes
}
export function getModuleViewComponents() {
return import.meta.glob(['@/module/**/views/**/*.vue', '@/module/!User/views/**/*.vue', '@/module/!Develop/views/**/*.vue', '@/module/!Options/views/**/*.vue'])
}

View File

@@ -5,6 +5,7 @@ import { WhiteListPage } from '/admin/enum/app'
import { Router, RouteRecordRaw } from 'vue-router'
import { usePermissionsStore } from '/admin/stores/modules/user/permissions'
import { Menu } from '/admin/types/Menu'
import { toRaw } from 'vue'
const guard = (router: Router) => {
// white list
@@ -36,7 +37,7 @@ const guard = (router: Router) => {
// 挂载路由(实际是从后端获取用户的权限)
const permissionStore = usePermissionsStore()
// 动态路由挂载
const asyncRoutes = permissionStore.getAsyncMenusFrom(userStore.getPermissions)
const asyncRoutes = permissionStore.getAsyncMenusFrom(toRaw(userStore.getPermissions))
asyncRoutes.forEach((route: Menu) => {
router.addRoute(route as unknown as RouteRecordRaw)
})

View File

@@ -1,8 +1,10 @@
import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'
import type { App } from 'vue'
// module routers
import moduleRoutes from './constantRoutes'
import { getModuleRoutes, getModuleViewComponents } from './constantRoutes'
const moduleRoutes = getModuleRoutes()
getModuleViewComponents()
export const constantRoutes: RouteRecordRaw[] = [
{
path: '/dashboard',