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

Метод allows

Метод allows класса Gate применяется для проверки авторизации текущего пользователя на выполнение указанного действия. Первым параметром передаётся имя разрешения (ability), вторым - необязательный аргумент, обычно модель или массив данных, над которым выполняется действие. Метод возвращает true, если действие разрешено, и false в противном случае.

Синтаксис

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

Пример

Давайте проверим, может ли пользователь обновить статью с id равным 1:

<?php use Illuminate\Support\Facades\Gate; use App\Models\Article; use App\Models\User; $user = User::find(1); $article = Article::find(1); if (Gate::allows('update', $article)) { echo "User can update article"; } else { echo "User cannot update article"; } ?>

Результат выполнения кода:

"User can update article"

Пример

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

<?php use Illuminate\Support\Facades\Gate; use App\Models\Article; use App\Models\User; $user = User::find(1); $article = Article::find(1); $canView = Gate::allows('view', $article); $canDelete = Gate::allows('delete', $article); if ($canView) { echo "User can view article"; } if ($canDelete) { echo "User can delete article"; } ?>

Результат выполнения кода:

"User can view article"

Пример

Если разрешение не требует модели, можно передать только имя действия:

<?php use Illuminate\Support\Facades\Gate; use App\Models\User; $user = User::find(1); if (Gate::allows('view-dashboard')) { echo "User can access dashboard"; } else { echo "User cannot access dashboard"; } ?>

Результат выполнения кода:

"User can access dashboard"

Пример

Метод allows также работает с массивами аргументов. Например, для проверки прав на создание модели:

<?php use Illuminate\Support\Facades\Gate; use App\Models\User; $user = User::find(1); if (Gate::allows('create', [Article::class])) { echo "User can create article"; } else { echo "User cannot create article"; } ?>

Результат выполнения кода:

"User can create article"

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

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