Я работаю с Laravel 5.1, и я давно искал ответ на эту проблему, но мне это не удалось.
Проблема возникает, когда суперадминистратор пытается войти в систему. Весь процесс входа в систему реализован в AJAX, поэтому при входе в систему AJAX ожидает URL-адреса перенаправления, в то время как процесс аутентификации выполняется контроллером аутентификации.
Если запрос в порядке, URL-адрес панели управления отправляется обратно в ajax, НО промежуточное ПО выводит меня из системы после выполнения перенаправления.
Auth WelcomeController для проверки суперадминистратора выглядит следующим образом (он отлично работает, доставляя правильный URL-адрес перенаправления):
\Config::set('auth.model', 'App\Super_Admin');
$sadmin = \Auth::createEloquentDriver();
\Auth::setProvider($sadmin->getProvider());
//Admin verification
if(\Auth::attempt(['system_admin_user' => $request->username, 'password' => $request->password])) {
\Auth::user()->setAttribute('profile','SuperAdmin');
\Session::set('sadmin_name',\Auth::user()->system_admin_fullname);
return response()->json(['login_status' => 'success', 'redirect' => 'SuperAdmin/dashboard', 'error' =>'']);
}
else {
return response()->json(['login_status' => 'invalid', 'error' => 'Usuario y/o password invalidos', 'redirect' => '/']);
}
Функция обработки запросов в промежуточном программном обеспечении is_admin выглядит следующим образом (работает не так, как задумано):
public function handle($request, Closure $next)
{
if(\Auth::check() && \Auth::user()->profile == "SuperAdmin") {
return redirect('/');
}
else {
return response('Unauthorized.', 401);
}
return $next($request);
}
Я также пробовал использовать другой код промежуточного программного обеспечения:
public function handle($request, Closure $next)
{
if(!\Auth::check() || \Auth::user()->profile != "SuperAdmin") {
$this->auth->logout();
}
return $next($request);
}
Группа маршрутов, защищенная для администратора, определяется следующим образом:
Route::group(['middleware' => ['auth','is_superAdmin']], function() {
Route::get('SuperAdmin/dashboard','Super_Admin\SuperAdminController@index');
});
Заранее спасибо!