Files
Automata/packages/editor-ui/src/composables/useUserHelpers.ts

33 lines
926 B
TypeScript

import type { RouteLocation, RouteLocationNormalizedLoaded, Router } from 'vue-router';
import { hasPermission } from '@/utils/rbac/permissions';
import type { PermissionTypeOptions } from '@/types/rbac';
export function useUserHelpers(router: Router, route: RouteLocationNormalizedLoaded) {
const canUserAccessRouteByName = (name: string) => {
const resolvedRoute = router.resolve({ name });
return canUserAccessRoute(resolvedRoute);
};
const canUserAccessCurrentRoute = () => {
return canUserAccessRoute(route);
};
const canUserAccessRoute = (route: RouteLocation) => {
const middleware = route.meta?.middleware;
const middlewareOptions = route.meta?.middlewareOptions;
if (!middleware) {
return true;
}
return hasPermission(middleware, middlewareOptions as PermissionTypeOptions | undefined);
};
return {
canUserAccessRouteByName,
canUserAccessCurrentRoute,
canUserAccessRoute,
};
}