множественная аутентификация в laravel - PullRequest
0 голосов
/ 24 января 2020

У меня есть три типа пользователей: администратор, клиент и поставщик.

Я хочу сделать множественную аутентификацию с шагами 1 - все пользователи будут вставлены в таблицу пользователей, и я буду различать их с помощью job_type поле

1 => admin 2 => custeomer 3 => vendor

Мой вопрос: как настроить $gurde в user.php (модель), поскольку у меня несколько типов пользователей?

Если я использую множественную аутентификацию по умолчанию:
Я создаю $gurde для административной таблицы в модели администратора или $gurde обслуживания клиентов в модели клиента, я буду повторять данные, такие как электронная почта и пароль, и если я сделаю для внешнего интерфейса я заставлю администратора и продавца снова создать нового пользователя.

user table :email|password
admin table  :email|password

Я хочу, чтобы все данные регистрации пользователей, такие как адрес электронной почты и пароль, были только в пользовательской таблице.

1 Ответ

1 голос
/ 24 января 2020

Есть несколько способов добиться этого. Использование ворот и / или политик, вероятно, является лучшим способом продвижения вперед.

Ворота просты в настройке, они определены в вашем 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, она очень тщательная и содержит примеры.

...