РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
740 of 1392 menu

Метод any

Метод any класса Gate проверяет, имеет ли текущий пользователь право на выполнение хотя бы одного действия из переданного массива. В отличие от метода check, который требует выполнения всех условий, any возвращает true, если хотя бы одна способность разрешена. Метод принимает первым параметром массив имён способностей, вторым - необязательный аргумент для передачи в колбэки.

Синтаксис

<?php use Illuminate\Support\Facades\Gate; $res = Gate::any($abilities, $arguments); ?>

Пример

Давайте проверим, может ли пользователь редактировать или удалять статью:

<?php namespace App\Http\Controllers; use App\Models\Article; use Illuminate\Support\Facades\Gate; use Illuminate\Http\Request; class ArticleController extends Controller { public function edit(Request $request, Article $article) { $res = Gate::any(['update', 'delete'], $article); if ($res) { echo "User has at least one permission"; } else { echo "User has no permissions"; } } } ?>

Результат выполнения кода для пользователя с правом 'update':

"User has at least one permission"

Пример

Давайте используем метод any для проверки нескольких способностей без дополнительных аргументов:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Gate; class UserController extends Controller { public function dashboard() { $res = Gate::any(['manage-users', 'view-reports', 'edit-settings']); if ($res) { echo "User has access to dashboard"; } else { echo "Access denied"; } } } ?>

Результат выполнения кода, если у пользователя есть право 'view-reports':

"User has access to dashboard"

Пример

Давайте передадим несколько аргументов в метод any для проверки прав на разные модели:

<?php namespace App\Http\Controllers; use App\Models\Article; use App\Models\Comment; use Illuminate\Support\Facades\Gate; class PostController extends Controller { public function moderate() { $article = Article::find(1); $comment = Comment::find(1); $res = Gate::any(['update-article', 'delete-comment'], [$article, $comment]); if ($res) { echo "User can moderate content"; } else { echo "User cannot moderate"; } } } ?>

Результат выполнения кода для пользователя с правом 'delete-comment':

"User can moderate content"

Смотрите также

  • метод check,
    который проверяет все способности одновременно
  • метод allows,
    который проверяет одну способность
  • метод denies,
    который проверяет отсутствие прав на действие
  • метод can,
    который проверяет права у текущего пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить