Как я могу проверить два разрешения в воротах laravel с помощью @can?

#laravel

Вопрос:

 //e.g...
@can('view-post')
// show publish page
@endcan

//something like this.
@can('view-post') OR @can('publish-post')
// show publish page
@endcan
 

Если у пользователя есть какие-либо права пользователя, то доступ предоставляется.

Ответ №1:

https://laravel.com/docs/8.x/authorization

Вы также можете определить, имеет ли пользователь право выполнять какие-либо действия из заданного набора действий. Для этого используйте @canany директиву:

 @canany(['update', 'view', 'delete'], $post)
    <!-- The current user can update, view, or delete the post... -->
@elsecanany(['create'], AppModelsPost::class)
    <!-- The current user can create a post... -->
@endcanany
 

Комментарии:

1. спасибо за эту демонстрацию, она работает так, как я и ожидал. Я думаю, это лучший подход.

Ответ №2:

В качестве альтернативы, в вашем клинке:

     @if(Gate::allows('whatever') || Gate::allows('whatever-else'))
    <!-- Code --> 
    @endif
 

Комментарии:

1. Это не демонстрирует два разных действия, о которых, похоже, спрашивает ОП.

2. @ceejayoz Нет ничего сложного в том, чтобы добавить еще одно условие.

3. Конечно, но ОП боролся с этим, так что демонстрация этого полезна. Спасибо, что сделали это.