Выводим работу с политиками в Laravel на новый уровень
Недавно прочитал статью про политики в Laravel и захотелось немного добавить от себя.
Само по себе использование политик не такая уж сложная задача, простые сценарии рассматривать не интересно. Давайте представим следующую ситуацию:
Вы заказчик и вы решили найти исполнителя на уборку офиса. Вы создаете некоторое задание, где описываете детали и публикуете. Исполнители видят ваше задание и хотят откликнуться на него.
Вот список требований для отклика исполнителем
- Задание должно быть опубликовано (Не черновик)
- Автор не может откликнуться на своё задание
- Исполнитель должен пройти проверку
- Исполнитель ещё не оставлял отклик к этому заданию
- У исполнителя достаточно средств на счете для оплаты отлкика
Напишем политику согласно нашим требованиям
Все выглядит логично и вроде бы проблем нет. Напишем теперь контроллер
Ну а теперь вопрос, как понять по какой причине пользователь не смог оставить свой отклик и что мы ему должны показать?
На этот случай разработчики Laravel позаботились о нас и добавили возможность возвращать причину из-за которой произошел отказ в доступе. Согласно документации вы можете использовать вспомогательный класс для явного указания причин того или иного запрета.
Давайте теперь доработаем политики и укажем конкретные причины, почему пользователь не может оставить отклик.
Теперь, когда Gate будет выбрасывать исключение \Illuminate\Auth\Access\AuthorizationException
в него будет передаваться код ошибки, а также текст сообщения, и пользователь в ответе от сервера увидит конкретную причину.
Вроде не так сложно, но этой возможностью почему-то редко кто пользуется. На этом все. Буду рад, если заметка окажется полезной!
P.S. Как говорится, не забывайте подписываться, ставить лайки и оставлять комментарии под видео.