All files / js/utils permissions.ts

0% Statements 0/13
0% Branches 0/6
0% Functions 0/3
0% Lines 0/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36                                                                       
import { usePermissionError } from '@/composables/usePermissionError';
 
export function checkPermission(module: string, ability: string): boolean {
    // Get the current page props to check abilities
    const page = (window as any).$page;
    if (!page?.props?.auth?.abilities) {
        return false;
    }
 
    const moduleAbilities = page.props.auth.abilities[module];
    if (!moduleAbilities) {
        return false;
    }
 
    return !!moduleAbilities[ability];
}
 
export function requirePermission(module: string, ability: string): boolean {
    const hasPermission = checkPermission(module, ability);
    
    if (!hasPermission) {
        const { showError } = usePermissionError();
        showError({
            module,
            ability,
            message: `You don't have permission to ${ability} ${module}.`,
        });
    }
    
    return hasPermission;
}
 
export function canAccess(module: string, ability: string): boolean {
    return checkPermission(module, ability);
}