запретить обычному пользователю заходить на страницы администратора - PullRequest
0 голосов
/ 27 октября 2018

В модели User.php Я установил вызов функции isStatus ()

 public function isStatus(){
    return $this->status; // 1 of mysql table column name status, let say 0 is admin and 1 is normal user.

}

В имени контроллера LoginController.php , я хочу сделать это, если статус пользователя 0 перейдет на страницу администрирования , остальные перейдут на / page что означает главную страницу.

    protected function authenticated($request, $user){

    if($user->isStatus('0')){
        return redirect('/admin');
    }else{
        return redirect('/');
    }
}

Таблица пользователя со столбцом status имеет логическое значение , но не работает.

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Ваша функция isStatus() возвращает значение состояния модели пользователя.

В контроллере вы вызываете функцию с параметром, однако функция не принимает параметр.Это будет правильный код контроллера

if($user->isStatus()){         //Call the function without a parameter. Since this returns boolean (0 or 1) you don't need to add == 0)
    return redirect('/admin');
}else{
    return redirect('/');
}

И кстати: этот тип if имеет стиль написания короткой рукой:

($user->isStatus()) ? return redirect('/admin') : return redirect('/');

Подробнее об этом здесь .

0 голосов
/ 27 октября 2018

Поскольку вы используете Laravel, давайте немного переработаем ваш код.

Вы передаете параметр в свою функцию. Public функция isStatus () получает любой параметр и возвращает открытое значение.Удалите эту функцию.

auth () -> user () получит подключенного пользователя для вас, и вы сможете получить доступ к свойству статуса, как это

auth () -> user() -> status

Ваша функция должна выглядеть следующим образом:

return auth()->user()->status ? redirect('/admin'): redirect('/');

Вы можете включить эту проверку во все ваши контроллеры, которым требуется аутентификация роли.

Если вам интересно, вы также можете проверить некоторые модули из коробки, разработанные внешними поставщиками, которые обрабатывают реальные профессиональные проверки и избегают повторяющегося кода.

Проверьте их

и @ Kuebel's избранное

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...