2016-07-14 14 views
2

アプリケーションの役割に基づいてユーザーをリダイレクトする必要があります。 MySQLでは、ユーザーテーブルに "isAdmin"列を追加して、ユーザーがadminかどうかを確認しました。私が思いついた解決策は、ユーザーのタイプに応じて同じブレードにHTMLをレンダリングすることだけです。 たとえば、認証されたユーザーを自分の役割に従ってリダイレクトします

@if(Auth::user()->isAdmin == 1) 
<p>Hello, Admin</p> 
//other html for admin 

@else 
//other html for users 

もっと美しく効率的なコードでこれを行うより良い方法がありますか? 私はLaravelのデフォルト認証システムを使用しているこのパッケージ(https://github.com/acacha/adminlte-laravel)を使用しています。

ログインプロセス中にユーザーを2つの異なるブレードにリダイレクトする場合は、homeUsers.blade.phpとadmin.blade.phpと言うことができます。

答えて

2

ロジックはここにある:外国key.Thenがその役割belongsToユーザーの関係を作成するよう最良の方法は、二つのテーブル1 usersと別のrolesを作成し、ユーザーテーブルにrole_idを置くことです。

ただし、2つのビューがあり、管理者用と他のユーザー用に表示する場合は、以下の方法に従ってください。

私はあなたが使用しているLaravelのバージョンわからないんだけど、それはであるべきように、これは思えるあなたのケースでは、使用したい二つのビュー1)管理者2)homeUsers

@if(Auth::user()->isAdmin == 1) 
    @include('admin') //admin.blade.php 
@else 
@include('homeUsers') //homeUsers.blade.php 
+0

これは私にとって最良の選択肢です。 @ダニエルが提案した解決策を試しましたが、私の場合はうまくいきません。たぶん私は間違ったことをやっているかもしれませんが、今はあなたのソリューションを使用します。 – harunB10

+0

@ harunB10私はあなたを喜んで応援します! –

+1

多分同じ問題を抱えている人たちの言及を忘れてしまった。それは '@include( 'admin.blade.php')'の代わりに '@include( 'admin')'でなければなりません。 (拡張子なし) – harunB10

1

を作成します。あなたのミドルウェア。

ミドルウェアのRedirectIfAuthenticated.phpをご覧ください。それから、次のことができます。

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

    return $next($request); 
} 
関連する問題