diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index 723fcf0..276752f 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -6,28 +6,19 @@ import { constantRoutes, asyncRoutes } from "@/router" import asyncRouteSettings from "@/config/async-route" const hasPermission = (roles: string[], route: RouteRecordRaw) => { - if (route.meta && route.meta.roles) { - return roles.some((role) => { - if (route.meta?.roles !== undefined) { - return route.meta.roles.includes(role) - } else { - return false - } - }) - } else { - return true - } + const routeRoles = route.meta?.roles + return routeRoles ? roles.some((role) => routeRoles.includes(role)) : true } const filterAsyncRoutes = (routes: RouteRecordRaw[], roles: string[]) => { const res: RouteRecordRaw[] = [] routes.forEach((route) => { - const r = { ...route } - if (hasPermission(roles, r)) { - if (r.children) { - r.children = filterAsyncRoutes(r.children, roles) + const tempRoute = { ...route } + if (hasPermission(roles, tempRoute)) { + if (tempRoute.children) { + tempRoute.children = filterAsyncRoutes(tempRoute.children, roles) } - res.push(r) + res.push(tempRoute) } }) return res @@ -38,12 +29,7 @@ export const usePermissionStore = defineStore("permission", () => { const dynamicRoutes = ref([]) const setRoutes = (roles: string[]) => { - let accessedRoutes - if (!asyncRouteSettings.open) { - accessedRoutes = asyncRoutes - } else { - accessedRoutes = filterAsyncRoutes(asyncRoutes, roles) - } + const accessedRoutes = asyncRouteSettings.open ? filterAsyncRoutes(asyncRoutes, roles) : asyncRoutes routes.value = constantRoutes.concat(accessedRoutes) dynamicRoutes.value = accessedRoutes }