Я решаю проблемы, но у меня ошибка, при попытке получить свойство 'user_role' не объекта - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть код по умолчанию, встроенный Auth LoginController@login Функция login переопределяется, также у меня есть таблица users . По сути, я создаю Панели (Admin, Staff) с одной страницы входа. Когда user_role admin существует, откройте страницу admin , в противном случае не войдите в систему . такой же как штатный сотрудник страница.

Ответы [ 3 ]

0 голосов
/ 05 февраля 2020

Если у вас есть "попытка получить свойство 'user_role' необъектного" в этом коде

Auth::user()->user_role

Это в основном означает, что ваш пользователь не вошел в систему и, таким образом, Auth::user() возвращает ноль попробуйте dd(Auth::user()), чтобы проверить это.

Если это так, вам придется копать глубже на этом отведении.

0 голосов
/ 05 февраля 2020

In LoginController.php файл

Удалить

 protected $redirectTo = '/home';

Добавить

Illuminate\Support\Facades\Auth; /*Add facade above controller class name*/

public function redirectTo(){

    // User role
    $role = Auth::user()->user_role; 

    // Check user role
    switch ($role) {
        case 'admin':
            return 'index/admin';
        break;
        case 'staff':
            return 'index/staff';
        break; 
        case 'student':
            return 'index/student';
        break; 
        default:
            return '/home'; 
        break;
     }
}
0 голосов
/ 05 февраля 2020

Попробуйте это в вашем логине перенаправлении странице:

@auth
    @if(\Auth::user()->user_role == 'admin')
      //admin panel
    @elseif(\Auth::user()->user_role == 'staff')
     //staff panel
    @endif
@endauth

Вам не нужно ничего менять в вашем LoginController причине он уже обработан middleware ('auth') . Это скроет компоненты, которые не принадлежат текущему пользователю, и пользователь не сможет войти, если не зарегистрирован.

...