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

Метод canAny

Метод canAny класса User предназначен для проверки наличия у пользователя хотя бы одного разрешения из переданного списка. Метод принимает первым параметром массив строк с названиями разрешений или непосредственно перечисление разрешений через запятую. Вторым необязательным параметром можно передать модель, к которой применяется разрешение. Метод возвращает булево значение true, если пользователь имеет хотя бы одно из перечисленных прав, и false в противном случае.

Синтаксис

<?php use AppModelsUser; // Проверка на наличие хотя бы одного права $user->canAny($abilities, $arguments = []); ?>

Пример

Проверим, имеет ли пользователь право на создание или редактирование статьи:

<?php namespace AppHttpControllers; use AppModelsUser; use IlluminateHttpRequest; class ArticleController extends Controller { public function create(Request $request) { $user = $request->user(); if ($user->canAny(['create-article', 'edit-article'])) { return "User has create or edit permission"; } return "User does not have required permissions"; } } ?>

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

"User has create or edit permission"

Пример

Проверим наличие прав на редактирование или удаление конкретной статьи:

<?php namespace AppHttpControllers; use AppModelsArticle; use AppModelsUser; use IlluminateHttpRequest; class ArticleController extends Controller { public function update(Request $request, int $id) { $user = $request->user(); $article = Article::findOrFail($id); if ($user->canAny(['update', 'delete'], $article)) { return "User can update or delete this article"; } return "User cannot update or delete this article"; } } ?>

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

"User can update or delete this article"

Пример

Используем метод с несколькими правами из политик:

<?php namespace AppHttpControllers; use AppModelsPost; use AppModelsUser; use IlluminateHttpRequest; class PostController extends Controller { public function manage(Request $request, int $id) { $user = $request->user(); $post = Post::findOrFail($id); $permissions = ['view', 'update', 'delete']; if ($user->canAny($permissions, $post)) { return "User has at least one permission for this post"; } return "User has no permissions for this post"; } } ?>

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

"User has at least one permission for this post"

Пример

Используем метод в Blade-шаблоне для условного отображения контента:

@auth @if (auth()->user()->canAny(['manage-users', 'edit-users'])) <div class="admin-panel"> <h3>Admin Panel</h3> <p>You have admin or editor permissions</p> </div> @else <div class="user-panel"> <h3>User Panel</h3> <p>You have regular user permissions</p> </div> @endif @endauth

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

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