Как сделать Laravel 6 авторизацию, которая проверяет 4 разных типа пользователя - PullRequest
1 голос
/ 24 февраля 2020

Я пытался редактировать этот урок безрезультатно. Это работает, если у вас есть только пользователь и администратор. Мне нужно сделать так, чтобы он проверил 4 возможных типа пользователя.

https://www.itsolutionstuff.com/post/laravel-6-multi-auth-authentication-tutorialexample.html

Ответы [ 3 ]

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

Исходя из вашего комментария к ответу Рубена Даниеляна, кажется, что вы пытаетесь использовать is_admin в качестве идентификатора роли, используя 1 и 2, однако, если вы использовали миграцию учебника, это не сработает, поскольку is_admin является логическим значением , Таким образом, вам придется изменить в файле миграции на $table->integer('is_admin')->nullable();

Редактировать:

Как сказано в Porloscerros, возможно, вам также следует переименовать is_admin в более подходящее имя, например role_id или role_category, поскольку поля, начинающиеся с is_, обычно используются для логического значения, чтобы представлять, находится ли запись в одном указанном c состоянии или категории (например, is_active, is_hidden или is_discounts)

0 голосов
/ 25 марта 2020

Это просто.

Все, что вам нужно сделать, это добавить защиту.

Открыть app/Providers/AuthServiceProvider.php и изменить способ загрузки

public function boot(){
    $this->registerPolicies();
    Auth::viaRequest('admin', function ($request) {
         return Admin::where('token', $request->token)->first();
    });
}

После этого прикрепите этот охранник к вашей модели в config/auth.php.

...
'guards' => [
    'web' => ['driver' => 'session','provider' => 'users',],
    'admin' => ['driver' => 'session','provider' => 'admins',],
],
...
'providers' => [
    'users' => ['driver' => 'eloquent','model' => App\User::class,],
    'admins' => ['driver' => 'eloquent','model' => App\Admin::class,],
],
...

Теперь вы можете использовать промежуточное ПО auth:admin на маршруте, чтобы проверить, вошел ли в систему admin, прежде чем достигнуть этого маршрута.

0 голосов
/ 24 февраля 2020

Вы можете использовать пакет ролей и разрешений для назначения ролей зарегистрированным пользователям, spatie/laravel-permission - мой лучший выбор. Затем вы можете перенаправить пользователя в зависимости от его роли

Код из вашего урока

public function login(Request $request)
{
    ...
    $user = auth()->user();
        if ($user->hasRole('admin')) {
            return redirect()->route('admin.home');
        }else if ($user->hasRole('modertor')){
            return redirect()->route('moderator.home');
        }else if ($user->hasRole('translator')){
            return redirect()->route('translator.home');
        }else{
            return redirect()->route('home');
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...