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, }; }