Метод cannot
Метод cannot класса User применяется к экземпляру модели пользователя и позволяет проверить, запрещено ли ему выполнение определённого действия. Первым параметром передаётся имя способности (ability), вторым - модель или массив моделей, над которыми выполняется действие. Метод возвращает bool: true, если действие запрещено, и false, если разрешено. Данный метод является полной противоположностью метода can.
Синтаксис
<?php
$res = $user->cannot($ability, $arguments);
?>
Пример
Давайте проверим, запрещено ли текущему пользователю обновление модели статьи:
<?php
use AppModelsUser;
use AppModelsArticle;
$user = User::find(1);
$article = Article::find(1);
if ($user->cannot('update', $article)) {
echo "You cannot update this article.";
} else {
echo "You can update this article.";
}
?>
Результат выполнения кода:
"You cannot update this article."
Пример
Давайте проверим запрет на удаление статьи, используя класс пользователя из текущей авторизации:
<?php
use AppModelsArticle;
$article = Article::find(2);
if (auth()->user()->cannot('delete', $article)) {
echo "Deletion is forbidden.";
} else {
echo "Deletion is allowed.";
}
?>
Результат выполнения кода:
"Deletion is forbidden."
Пример
Давайте проверим запрет на создание модели, передавая в качестве аргумента только имя класса:
<?php
use AppModelsUser;
use AppModelsArticle;
$user = User::find(1);
if ($user->cannot('create', Article::class)) {
echo "Creation is not allowed.";
} else {
echo "Creation is allowed.";
}
?>
Результат выполнения кода:
"Creation is not allowed."