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

Функция authorize

Функция authorize предназначена для авторизации действий пользователя в приложении Laravel. Она проверяет, имеет ли текущий пользователь право на выполнение указанного действия. Если авторизация не пройдена, функция выбрасывает исключение AuthorizationException. Первым параметром передается имя действия или способность (ability), вторым - модель или параметры для проверки.

Синтаксис

<?php authorize($ability, $arguments); ?>

Пример

Проверим, может ли пользователь обновить статью:

<?php namespace AppHttpControllers; use AppModelsArticle; class ArticleController extends Controller { public function update($id) { $article = Article::findOrFail($id); authorize('update', $article); // Логика обновления статьи } } ?>

Если у пользователя нет прав на обновление статьи, будет выброшено исключение и код после функции не выполнится.

Пример

Использование функции authorize в контроллере с передачей нескольких параметров:

<?php namespace AppHttpControllers; use AppModelsPost; use AppModelsCategory; class PostController extends Controller { public function store($categoryId) { $category = Category::findOrFail($categoryId); authorize('create', [Post::class, $category]); // Логика создания поста } } ?>

Вторым параметром можно передать массив, где первый элемент - класс модели, а второй - дополнительный объект для проверки.

Пример

Обработка исключения, выбрасываемого функцией authorize:

<?php namespace AppHttpControllers; use IlluminateAuthAccessAuthorizationException; class DashboardController extends Controller { public function adminPanel() { try { authorize('view-admin-panel'); // Код для административной панели echo "Admin panel content"; } catch (AuthorizationException $e) { echo "You don't have permission to view this page"; } } } ?>

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

"You don't have permission to view this page"

Пример

Использование authorize с проверкой нескольких способностей:

<?php namespace AppHttpControllers; use AppModelsComment; class CommentController extends Controller { public function moderate($id) { $comment = Comment::findOrFail($id); authorize(['update', 'delete'], $comment); // Логика модерации комментария } } ?>

Функция проверит, есть ли у пользователя хотя бы одна из указанных способностей.

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

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