Как задать глобльный фильтр в Laravel Nova?

В Laravel Nova можно задать глобальный фильтр для административной панели с использованием "Global Nova middleware". Это позволит применять фильтр ко всем ресурсам в Nova.

Для того чтобы создать глобальный фильтр, вам понадобится создать Middleware и зарегистрировать его в приложении.

Шаг 1: Создание обработчика Middleware
Создайте новый обработчик Middleware с помощью команды php artisan make:middleware GlobalNovaFilter.

В файле app/Http/Middleware/GlobalNovaFilter.php появится шаблон Middleware, который вы можете использовать для реализации своей логики.

namespace AppHttpMiddleware;

use Closure;
use LaravelNovaHttpRequestsNovaRequest;

class GlobalNovaFilter
{
    public function handle(NovaRequest $request, Closure $next)
    {
        // Здесь вы можете реализовать свою логику фильтрации

        return $next($request);
    }
}

Шаг 2: Регистрация Middleware
Откройте файл app/Http/Kernel.php и добавьте созданный Middleware в $middleware массив и в $routeMiddleware:

protected $middleware = [
        // ...
        AppHttpMiddlewareGlobalNovaFilter::class,
    ];

protected $routeMiddleware = [
        // ...
        'nova' => AppHttpMiddlewareGlobalNovaFilter::class,
    ];

Теперь глобальный фильтр будет применяться к каждому запросу, отправленному в административную панель Nova.

Вы можете настроить свою логику фильтрации в методе handle обработчика Middleware. Например, вы можете проверять условия и применять фильтры к запросам на основе параметров пользователя или его роли.

Кроме того, для отключения глобального фильтра временно или в зависимости от определенных условий, вы можете использовать метод except или only в Middleware.

Например, чтобы отключить глобальный фильтр для конкретного ресурса или действия, вам нужно добавить следующий код в метод handle обработчика Middleware:

if ($request->is('nova/resources/users') || $request->is('nova/action-name')) {
    return $next($request);
}

Таким образом, вы можете настроить и использовать глобальный фильтр в Laravel Nova для применения фильтрации ко всем ресурсам в административной панели Nova.