У меня есть 2 охранника на моем сайте клиентов и администраторов. По какой-то причине, когда я вошел в систему с правами администратора и попытался войти в систему с учетной записью клиента, я вошел в систему от администратора. После этого форма входа клиента обновляется, и я могу войти без проблем.
Вот мои охранники:
'guards' => [
'customer' => [
'driver' => 'session',
'provider' => 'customers',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
и поставщики:
'providers' => [
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
'customers' => [
'driver' => 'eloquent',
'model' => App\Customer::class,
],
],
Маршруты:
//for admins
$this->get('/login', 'Http\Controllers\Auth\LoginController@showLoginForm')->name('adminLogin');
$this->post('/login', 'Http\Controllers\Auth\LoginController@login');
$this->post('/logout', 'Http\Controllers\Auth\LoginController@logout')->name('logout');
//for customers
Route::get('/acc/login', 'AccountController@loginForm')->name('customerLoginForm');
Route::post('/acc/login', 'AccountController@login')->name('customerLogin');
Администратор использует файлы аутентификации laravel по умолчанию, и клиенты имеют заказной контроллер с методом входа, подобным этому:
public function login(Request $request)
{
$rules = [
'customer_email' => 'required|email',
'customer_password' => 'required|string',
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return redirect()->route('customerLoginForm')
->withErrors($validator);
} else {
if (Auth::guard('customer')->attempt(['email' => $request->customer_email, 'password' => $request->customer_password])) {
return redirect()->route('accountMyOrders');
} else {
return redirect()->back()->withInput($request->only('customer_email'))->withErrors('Wrong login/email!');
}
}
}
В итоге логин и пароль совпадают с данными в БД, но я не могу войти в обе учетные записи. Это невозможно на laravel или есть какая-то ошибка в коде?
Большое спасибо за любую помощь!