refactor(editor): Migrate userHelpers mixin to composable (no-changelog) (#9737)
This commit is contained in:
32
packages/editor-ui/src/composables/useUserHelpers.ts
Normal file
32
packages/editor-ui/src/composables/useUserHelpers.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
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,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user