2015-05-08 2 views
1

Я хочу показать страницу ошибки 404, если пользователь пытается получить доступ к странице администратора, если он не зарегистрирован или у него нет типа «Admin». Эта работа прекрасна, если пользователь вошел в систему, если пользователь не имеет доступа к панели администратора. Если я удалю if(Auth::check()), сценарий показывает ошибку Trying to get property of non-object.Laravel 5 middleware Auth check not working

class AdminMiddleware { 
    public function handle($request, Closure $next) 
    { 
     if(Auth::check()){ 
      if ($request->user()->type != 'Admin'){ 
       return abort(404); 
      } 
     } 

     return $next($request); 
    } 

} 

ответ

4

Попробуйте

class AdminMiddleware { 
    public function handle($request, Closure $next) 
    { 
     if(Auth::check()){ 
      if ($request->user()->type != 'Admin'){ 
       return abort(404); 
      } 
     }else{ 
      return abort(404); 
     } 
     return $next($request); 
    } 
} 

Он должен проверить, если пользователь вошел в систему, и если да проверить, ГЭК и администратора, если ГЭС не вошли в шоу ему 404

или более короткую версию

class AdminMiddleware { 
    public function handle($request, Closure $next) 
    { 
     if(Auth::check() && $request->user()->type == 'Admin'){ 
      return $next($request); 
     } 
     return abort(404); 
    } 
} 
+0

Это работает, спасибо большое! Я забыл поставить else в Auth :: check(). – Roberto