Есть несколько способов добиться этого. Использование ворот и / или политик, вероятно, является лучшим способом продвижения вперед.
Ворота просты в настройке, они определены в вашем App\Providers\AuthServiceProvider
классе.
Gate::define('edit-settings', function ($user) {
return $user->job_type === 1;
});
Затем, когда вы хотите выполнить проверку, вы можете позвонить в ворота, чтобы проверить, есть ли у пользователя разрешение.
if (Gate::allows('edit-settings')) {
...
}
Обратите внимание, что пользователь автоматически проходит к воротам, и вам не нужно проходить его самостоятельно.
Ворота хороши, если у вас есть только несколько мест, в которых они вам нужны и ни для каких действий CRUD, однако, если они нужны вам для всех действий CRUD, вам лучше использовать политики.
Политики определяют все полномочия для конкретной модели в одном месте. Laravel может создать их для вас php artisan make:policy PostPolicy --model=Product
, а затем вы помещаете свой логин авторизации c в каждую из производимых заглушек методов.
Политики можно проверить несколькими способами, либо в качестве промежуточного программного обеспечения на маршрут или вызов непосредственно на пользователя, которого вы пытаетесь аутентифицировать.
if ($user->can('update', Product::class)) {
...
}
Часто вы обнаружите, что требуется сочетание Стражей и Политик.
Посмотрите на Документация по авторизации на сайте Laravel, она очень тщательная и содержит примеры.