|  |  |  | 
|---|
|  |  |  | import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router'; | 
|---|
|  |  |  | import { useUserStore } from '@/store'; | 
|---|
|  |  |  | import { RouteLocationNormalized, RouteRecordRaw } from "vue-router"; | 
|---|
|  |  |  | import { useUserStore } from "@/store"; | 
|---|
|  |  |  | import { getUserInfo, getUserResources } from "@/utils/auth"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export default function usePermission() { | 
|---|
|  |  |  | const userStore = useUserStore(); | 
|---|
|  |  |  | 
|---|
|  |  |  | accessRouter(route: RouteLocationNormalized | RouteRecordRaw) { | 
|---|
|  |  |  | //遍历userStore.resource | 
|---|
|  |  |  | let isok = false; | 
|---|
|  |  |  | let user = getUserResources(); | 
|---|
|  |  |  | let resurces: any; | 
|---|
|  |  |  | if (userStore.resources) { | 
|---|
|  |  |  | userStore.resources.forEach(r => { | 
|---|
|  |  |  | resurces = userStore.resources; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | if (user) { | 
|---|
|  |  |  | resurces = JSON.parse(user); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (resurces) { | 
|---|
|  |  |  | resurces.forEach(r => { | 
|---|
|  |  |  | if ((r.menuType == 0 || r.menuType == 3) && (route.name == r.component || route.path == r.component)) { | 
|---|
|  |  |  | isok = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | findFirstPermissionRoute(_routers: any, role = 'admin') { | 
|---|
|  |  |  | findFirstPermissionRoute(_routers: any, role = "admin") { | 
|---|
|  |  |  | const cloneRouters = [..._routers]; | 
|---|
|  |  |  | while (cloneRouters.length) { | 
|---|
|  |  |  | const firstElement = cloneRouters.shift(); | 
|---|
|  |  |  | if ( | 
|---|
|  |  |  | firstElement?.meta?.roles?.find((el: string[]) => { | 
|---|
|  |  |  | return el.includes('*') || el.includes(role); | 
|---|
|  |  |  | return el.includes("*") || el.includes(role); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | return { name: firstElement.name }; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // You can add any rules you want | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|