2016-08-25 7 views
3

管理者のみがlaravelプロジェクトのnavbarの特定のコンテンツを表示できるようにしようとしています。私はusersテーブルを持っています。役割の列は管理者ユーザーがCRUD操作の管理パネルにアクセスできるようにミドルウェアで使用する 'admin'と 'user'値で構成されています。管理者だけがLaravelのページを表示できるようにする

私が試してみた:

@if(auth()->check()) 
@if(Auth::user()->get(array('users.role')) == 'admin') 

    'THIS IS WHAT I WANT ONLY ADMIN USERS TO SEE!' 

@endif 
@endif 

をしかし、「管理者」ユーザにログインしたときに、私はまだ管理者のみのコンテンツを見ることはできません。私はかなり新しいフレームワークですが、もし誰かがアドバイスを持っていれば、私はそれを高く評価します!

@if (Auth::user() && Auth::user()->role == 'admin') 
    'THIS IS WHAT I WANT ONLY ADMIN USERS TO SEE!' 
@endif 

Auth::user()Auth::check()と同じであり、ユーザーが認証されている場合、それはチェックします:

おかげで、

サム

答えて

3

はこれを試してみてください。ユーザーが認証された場合のみ、LaravelはAuth::user()->role == 'admin'を実行し、ユーザーが管理者であるかどうかを確認します。

2

あなたは別の管理ミドルウェア・グループを作成することができます

:あなたのコードのための

Route::group(['middleware' => ['App\Http\Middleware\Adminmiddleware']], function() { 
      //admin routes 

    }); 

を、あなたがチェックすることができます:あなたは管理者のみが許可されているルートを保護することができるように

public function handle($request, Closure $next, $guard = null) 
    { 
     if(Auth::check()) 
     { 
      if($request->user()->role=='admin') 
      { 
       return $next($request); 
      } 
      return redirect('/');  
     } 

     return redirect('/login'); 
    } 

if(Auth::user()->role == 'admin') 
関連する問題