# 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);
    }