store/resources/js/composables/useCan.ts
Yoga Pangestu 15e2b7ec5b
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (8.3) (push) Waiting to run
tests / ci (8.4) (push) Waiting to run
tests / ci (8.5) (push) Waiting to run
feat: add material_result field to CuttingMaterial and CuttingMaterialCombination; update validation rules and service logic to handle new material result calculations; enhance frontend components for displaying material results in cutting management
2026-07-04 23:14:37 +07:00

34 lines
864 B
TypeScript

import { usePage } from '@inertiajs/vue3';
import { computed } from 'vue';
export function useCan() {
const page = usePage();
const permissions = computed(() => page.props.auth.user?.permissions ?? []);
const roles = computed(() => page.props.auth.user?.roles ?? []);
function can(permission: string | string[]): boolean {
if (Array.isArray(permission)) {
return permission.some((p) => permissions.value.includes(p));
}
return permissions.value.includes(permission);
}
function hasRole(role: string): boolean {
return roles.value.includes(role);
}
function hasAnyRole(roleList: string[]): boolean {
return roleList.some((role) => roles.value.includes(role));
}
return {
permissions,
roles,
can,
hasRole,
hasAnyRole,
};
}