Метод none
Метод none класса Gate проверяет, запрещены ли все переданные способности для текущего пользователя. Он возвращает true, если ни одна из указанных способностей не разрешена пользователю, и false, если хотя бы одна способность разрешена. Метод принимает массив названий способностей или отдельные названия в качестве аргументов. Это полезно для проверки, что пользователь не имеет ни одного из перечисленных прав.
Синтаксис
<?php
Gate::none($abilities, $arguments);
?>
Параметры метода:
-
$abilities- массив названий способностей или строка с одним названием -
$arguments- необязательный параметр, аргументы для проверки способностей
Пример
Проверим, запрещены ли пользователю редактирование и удаление статьи:
<?php
use Illuminate\Support\Facades\Gate;
use AppModelsUser;
use AppModelsArticle;
$user = User::find(1);
$article = Article::find(1);
$res = Gate::forUser($user)->none(['update-article', 'delete-article'], $article);
echo $res ? 'All abilities are forbidden' : 'At least one ability is allowed';
?>
Результат выполнения кода:
"At least one ability is allowed"
Пример
Проверим, запрещены ли пользователю создание, редактирование и удаление поста с использованием массива:
<?php
use Illuminate\Support\Facades\Gate;
use AppModelsUser;
$user = User::find(2);
$abilities = ['create-post', 'update-post', 'delete-post'];
if (Gate::forUser($user)->none($abilities)) {
echo 'User cannot perform any of these actions';
} else {
echo 'User can perform at least one action';
}
?>
Результат выполнения кода:
"User cannot perform any of these actions"
Пример
Используем метод none в контроллере для проверки прав перед выполнением операции:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesGate;
use AppModelsPost;
class PostController extends Controller
{
public function index()
{
$post = Post::find(1);
if (Gate::none(['edit-post', 'delete-post'], $post)) {
return 'You do not have any permission to manage this post';
}
return view('posts.manage', ['post' => $post]);
}
}
?>
Результат выполнения кода при условии, что пользователь не имеет прав:
"You do not have any permission to manage this post"