import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router'; import { useUserStore } from '@/store'; export default function usePermission() { const userStore = useUserStore(); return { // TODO test accessRouter(route: RouteLocationNormalized | RouteRecordRaw) { return ( !route.meta?.requiresAuth || !route.meta?.permission || userStore.permission?.includes(route.meta?.permission) ); }, findFirstPermissionRoute(_routers: any, permission: string) { const cloneRouters = [..._routers]; while (cloneRouters.length) { const firstElement = cloneRouters.shift(); if (firstElement?.meta?.permission === permission) { return { name: firstElement.name }; } if (firstElement?.children) { cloneRouters.push(...firstElement.children); } } return null; }, }; }