Policies и gates это механизмы авторизации в Laravel, которые позволяют вам определять и проверять права пользователей на определенные действия.
Policies это классы, которые организут логику авторизации вокруг определённой модели или ресурса. К примеру, имеется модель App\Models\Post
и App\Policies\PostPolicy
для авторизации действий пользователя, таких как создание или обновление сообщений.
Вы можете создать политику с помощью make:policy
Artisan-команды. Созданный класс появится в дирректории app/Policies
, которая будет создана, если команда вызывается впервые. Имеется также возможность при создании Policy привязывать их к модели:
php artisan make:policy PostPolicy --model=Post
Gates — это просто замыкания, которые определяют, имеет ли пользователь право выполнить данное действие. Обычно gate определяется в методе загрузки класса App\Providers\AuthServiceProvider с использованием фасада Gate. Класс gate всегда получает экземпляр пользователя в качестве первого аргумента и может опционально получать дополнительные аргументы, такие как соответствующая модель Eloquent. Может быть использован, чтобы определить, может ли пользователь обновить данную модель. Gate выполнит это, сравнивая идентификатор пользователя с user_id пользователя, создавшего сообщение.
Практика