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

Функция cannot

Функция cannot является вспомогательной функцией Laravel, предназначенной для проверки отсутствия прав доступа у текущего аутентифицированного пользователя. Она принимает имя способности в качестве первого параметра и необязательные аргументы в качестве второго. Функция возвращает true, если у пользователя нет прав на выполнение указанного действия, и false в противном случае. Она является удобной альтернативой использованию фасада Gate с методом denies.

Синтаксис

<?php cannot($ability, $arguments = []); ?>

Пример

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

@if (cannot('edit', $article)) <p>У вас нет прав на редактирование этой статьи.</p> @else <p>Вы можете редактировать эту статью.</p> @endif

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

<p>У вас нет прав на редактирование этой статьи.</p>

Пример

Используем функцию cannot внутри контроллера для условного выполнения логики:

<?php namespace AppHttpControllers; use AppModelsArticle; use IlluminateHttpRequest; use IlluminateSupportFacadesAuth; class ArticleController extends Controller { public function show(Article $article) { if (cannot('update', $article)) { return redirect()->route('articles.index') ->with('error', 'Доступ запрещён.'); } return view('article.edit', ['article' => $article]); } } ?>

Пример

Проверим отсутствие права на просмотр списка моделей. Для этого передадим имя класса в качестве второго аргумента:

@if (cannot('viewAny', AppModelsArticle::class)) <div class="alert alert-warning"> Вам недоступен список статей. </div> @endif

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

<div class="alert alert-warning"> Вам недоступен список статей. </div>

Пример

Функция cannot может быть использована в условиях для управления отображением элементов интерфейса в шаблонах Blade:

<nav> <ul> @if (cannot('view-dashboard')) <li><a href="/">Главная</a></li> @else <li><a href="/dashboard">Панель управления</a></li> @endif </ul> </nav>

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

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