Как создать Laravel Nova Gate / Policy для ограничения доступа к инструментам Nova?

Как я могу создать политику / шлюз, чтобы ограничить доступ пользователей к инструментам Nova (например, Spatie Nova Backup Tool)?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
1 557
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

У меня была такая же проблема, и я решил ее вот так.

  1. Перейти к NovaServiceProvider
  2. Добавить калитку / чек в методе tools()

    public function tools()
    
    {
    
        if (Auth::user()->hasAnyRole(['admin'])) {
            return [new Foo, new Bar];
        }
    
        return [];
    }
    

Это решит проблему, но я не уверен, подходит ли это Nova или нет.

Выполнение этого «Новым способом» будет с использованием метода canSee(). Вы можете прочитать об этом здесь.

public function tools()
{
    return [
        YourToolThatMightBeHidden::make()
            ->canSee(function ($request) {
                return $request->user()->can('access-this-tool');
            }),
    ];
}

Другие вопросы по теме