использовать условие для получения данных только для пользователя-администратора в контроллере laravel - PullRequest
2 голосов
/ 20 марта 2019

Я хочу получать данные только в том случае, если аутентификацией является администратор.

Контроллер пользователя:

public function index()
{
    if (auth::user()->type == 'admin') {

        return User::where('type','!=','admin')->latest()->paginate(100);
    }
}

Я получил ошибку :

Попытка получить свойство 'type' необъекта.

Ответы [ 3 ]

2 голосов
/ 20 марта 2019

Этот код:

if (auth::user()->type == 'admin') {

должно быть.

if (auth()->check() && auth()->user()->type == 'admin') {

Пояснение:

  • auth()->check() - убедитесь, что вошел пользователь.
  • && - останавливается после первой проверки, если оно ложно
  • auth()->user()->type - получает атрибут type от пользователя
1 голос
/ 20 марта 2019

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

МОДЕЛЬ ПОЛЬЗОВАТЕЛЯ

public function isAdministrator()
{
   return $this->hasRole('admin');
} 

ПОЛЬЗОВАТЕЛЬКОНТРОЛЛЕР

class userController
{
   public function index()
  {
      if(Auth::user()->isAdministrator())
      {
         # code...

      } 
}
0 голосов
/ 20 марта 2019

Попробуйте: создайте промежуточное ПО и пройдите маршрут через промежуточное ПО, оно будет работать

public function handle($request, Closure $next)
{
    if (auth()->user() && auth()->user()->type != 'admin')
    {
        return redirect('/unauthorized');
    }
    return $next($request);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...