iot-gateway_fontend/src/hooks/permission.ts

38 lines
1.3 KiB
TypeScript
Raw Normal View History

2024-11-12 15:44:05 +08:00
import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router';
import { useUserStore } from '@/store';
import { intersection } from 'lodash';
export default function usePermission() {
const userStore = useUserStore();
return {
accessRouter(route: RouteLocationNormalized | RouteRecordRaw) {
return (
!route.meta?.requiresAuth ||
!route.meta?.permissions ||
route.meta?.permissions?.includes('*') ||
intersection(route.meta?.permissions, userStore.permissions).length > 0
|| route.meta?.permissions?.includes(userStore.permissions)
);
},
// TODO 不知道是干嘛的
// findFirstPermissionRoute(_routers: any, role: string | string[] = '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 { name: firstElement.name };
// if (firstElement?.children) {
// cloneRouters.push(...firstElement.children);
// }
// }
// return null;
// },
// You can add any rules you want
};
}