Laravel Blade @can Not Working, But in_array(Auth::user()->getAllPermissions()) Does

I am working on a Laravel 11 project using Spatie’s Laravel Permission package for role-based access control.

I have the following Blade template where I want to conditionally display a sidebar link based on whether the authenticated user has the view_permission_categories permission.

`@php
    $userPermissions = Auth::user()->getAllPermissions()->pluck('name')-    >toArray();
@endphp

@if(in_array('view_permission_categories', $userPermissions))
<li>
    <x-nav-link href="/permissioncategories" :active="request()-    >is('permissioncategories')">Permission Categories</x-nav-link>
</li>
@endif

@can('view_permission_categories')
<li>
    <x-nav-link href="/permissioncategories" :active="request()- >is('permissioncategories')">Permission Categories</x-nav-link>
</li>
@endcan

`

The Issue:
The @if(in_array(…)) condition works as expected, and the link appears.
The @can(…) condition does NOT work, meaning the

  • inside it does not show up.

    My Questions:
    Why does @can(‘view_permission_categories’) fail, while in_array(Auth::user()->getAllPermissions()->pluck(‘name’)->toArray()) works?
    How can I debug why @can is not recognizing the permission?
    Is there something specific I need to configure for Spatie’s Laravel Permission to make @can work correctly?
    Any help would be greatly appreciated!

    What I Have Tried:

    1. Checked If the User Has the Permission:
      dd(Auth::user()->can('view_permission_categories'));

    2.Ensured Roles & Permissions Are Loaded:
    $currentUser = Auth::user()->load(‘roles.permissions’);

    Still, @can does not work.

    3.Cleared Cache:
    php artisan cache:clear
    php artisan config:clear
    php artisan view:clear
    php artisan route:clear
    php artisan permission:cache-reset

    4.Checked AuthServiceProvider.php for Gate Definitions:

    `use IlluminateSupportFacadesGate;
    public function boot()
    {
        Gate::define('view_permission_categories', function ($user) {
        return $user->hasPermissionTo('view_permission_categories');
    });
    }
    `