Files
orion-visor/orion-ops-ui/src/hooks/permission.ts

30 lines
907 B
TypeScript
Raw Normal View History

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