@Karpkarp

Как можно исправить ошибку trying to get property of non-object в laravel'е?

Получаю данную ошибку, если не аутентифицированный пользователь пытается перейти по маршруту
Route::get('home', 'AdminController@admin')->name('home');

По этому маршруту у меня работает посредник
public function handle(Request $request, Closure $next)
    {

        if(\Auth::user()->role_id != 1) {
            return redirect('')->with('success', 'Я вас сюда не звал');
        }

        return $next($request);
    }

Посредник проверяет поле role_id в таблице и если оно не равно 1, то кидает банан и редиректит на главную. Как я понял, ошибка возникает из-за того, что у не аутентифицированного пользователя никакой role_id нет.

Как можно исправить эту ошибку?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
aleksejjjj
@aleksejjjj
Ну так добавьте проверку. А ещё проще вызывайте auth перед вашим посредником.
// Вариант 1:
if(!\Auth::check() || \Auth::user()->role_id != 1) {
    return redirect('')->with('success', 'Я вас сюда не звал');
}

// Вариант 2:
Route::get('...', '...')->middleware(['auth', 'Ваш посредник']);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
У тебя идет проверка уже авторизованного пользователя. Поэтому сначала нужно проверить, авторизован ли пользователь. Если нет, отправлять на страницу авторизации, а если да, то проверять свойство role_id.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы