Аутентификация для другого пользователя Laravel (пытается получить свойство необъекта) - PullRequest
0 голосов
/ 06 сентября 2018

Привет, ребята, другая ошибка при входе в систему аутентификации, поэтому я хочу предоставить другую панель управления для другого пользователя, например, user_type = 1 будет перенаправлен на user1 / dashboard, а user_type = 2 будет перенаправлен на user2 / dashboard, но я получил эту ошибку

Попытка получить свойство необъектной аутентификации

это мой LoginController в laravel

if (Auth::attempt($credentials) && Auth::user()->user->user_type == 1) {
  // Authentication passed...
  return redirect('user1/dashboard');
  } else {
  Session::flash('login_error');
  return redirect('/login');
}

это мое промежуточное ПО, я делаю его 2 промежуточным ПО с User1Middleware и User2Middleware

if (Auth::check() && Auth::user()->users->user_type == 1)
    {
        return $next($request);
    } else {
        return redirect('/login');
    }

Итак, Users в моей базе данных, а user_type - это имя моей таблицы. Можете ли вы помочь мне, ребята, так рады, что эта проблема может быть решена очень скоро

Из ответа я отредактировал свой код на этом, но все еще получил ошибку: он перенаправляет на user1 / dashboard, а не перенаправляет на user2 / dashboard, даже если у меня есть логика для user_type = 2

$credentials = $request->only('email', 'password','user_type');
$credentials["is_verified"] = true;
if (Auth::attempt($credentials) && Auth::user()->user_type == 1) { 
   // Authentication passed... 
return redirect('user1/dashboard'); 
} else if( Auth::attempt($credentials) && Auth::user()->user_type == 2) { 
return redirect('user2/dashboard'); 
} else { 
Session::flash('login_error'); 
return redirect('/login'); 
}

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Привет в LoginController добавить или заменить метод

protected function authenticated($request, $user)
    {
        if ($user->user_type == 1) {
            return redirect()->route('here you route name');
        }


        return redirect()->route('here you route name for second type of user');
    }
0 голосов
/ 06 сентября 2018

Вам не нужно делать это:

Auth::user()->user

Потому что первый кусок кода:

Auth::user()

Является ли пользователь. Имея это в виду, вы можете изменить свой код так:

if (Auth::attempt($credentials) && Auth::user()->user_type == 1) {
  // Authentication passed...
  return redirect('user1/dashboard');
  } else {
  Session::flash('login_error');
  return redirect('/login');
}

if (Auth::check() && Auth::user()->user_type == 1)
    {
        return $next($request);
    } else {
        return redirect('/login');
    }

Ну вот, приятель!

РЕДАКТИРОВАТЬ: Код, добавленный к вопросу

Ваш else if только проверяет, есть ли у пользователя тип, у него нет этого куска кода:

Auth::attempt($credentials)

...