dragonika8
@dragonika8
FrontEnd-Разработчик

Как сделать две разные авторизации в Laravel?

Я пытаюсь сделать две разные авторизации. Одна для пользователей, другая для администраторов.

Я сделал с помощью Guard, но у меня он выдаётся ошибку, как её можно исправить

auth.php
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],

        'customers' => [
            'driver' => 'token',
            'provider' => 'customers',
            'hash' => false,
        ],
    ],

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        'customers' => [
            'driver' => 'eloquent',
            'model' => App\Customer::class,
        ],
    ],

И сам Controller
if (Auth::guard('customers')->attempt($data)) {
            $user = Customer::find(Auth::user()->id);

            $user->api_token = Str::random(32);
            $user->save();

            if ($user->api_token == "") return response()->json([], 200);

            return response()->json(['api_token' => $user->api_token], 200);
        } else {
            return response()->json(['login' => 'Неправильно указан логин или пароль'], 404);
        }

И ошибка, которая прилетает
Error: Call to undefined method Illuminate\Auth\TokenGuard::attempt() in file /home/a0419894/domains/rostovrepair161.ru/public_html/api/app/Http/Controllers/Auth/CustomerController.php on line 63
  • Вопрос задан
  • 439 просмотров
Решения вопроса 1
@Xachik
Laravel & Vue Js Developer
в guards[] у customer смени драйвер на session.
и добавь апи для него
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],

'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],

'customers' => [
'driver' => 'session',
'provider' => 'customers',
'hash' => false,
],

'customer-api' => [
'driver' => 'token',
'provider' => 'customers',
'hash' => false,
],
],
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы