2016-12-08 39 views
1

私は、ユーザーがミドルウェアを持つ管理者であるかどうかをチェックしますが、5.3は不可能です。私は前にこのコードを使用しました:Laravel 5.3ミドルウェア(Auth :: user())= null

if(Auth::guest()) //If the user is just a guest 
    { 
     return redirect("/"); 
    } 
    if(Auth::user()->isAdmin == 1) //If the user is logged in and he is the Admin 
    { 
     return $next($request); 
    } 
    else //If the user is not the admin he can't see this page 
    { 
     return redirect("/"); 
    } 
} 

現在、私は運がないと以下を試しました。ユーザーが管理者または通常のユーザーであるかどうかを確認する方法の正しい方向に誰かを指摘できますか?

/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next) 
{ 

    if ($request){ 
     if ($request->user()->role == 'Admin'){ 
      return "yes"; 
     } 
    } 

    return $next($request); 
} 
+0

ユーザーモデルにisAdminフィールドがありますか?また、データベースにログインしようとしているユーザーのフィールドが1に設定されているかどうかを確認してください。 – pseudoanime

+0

'if($ request-> user() - > role = 'Admin'){'はここの鍵です。 '=='を使う必要があります。 – Kyslik

+0

ありがとうございました。私は何を試していたのかを書き留めておきました。それでも、ユーザーがサインインしていない場合はデフォルト値を割り当てる必要があると言います。コードの修正もあります。 – master

答えて

0

=は1つのみです。 ==を使用する必要があります(または、===で厳密にする必要があります)。

+0

ありがとうございました。コードを修正しました – master

0

'='演算子は、たとえば変数に値を代入します。しかし、 '=='は何かを別のものと比較します。このコードのスニペットで

if ($request){ 
    if ($request->user()->role = 'Admin'){ 
     return "yes"; 
    } 
} 

あなたは「$要求」オブジェクトをaccesing、そこからユーザーの役割を引いています。返された '$ request'オブジェクトを文字列 'Admin'で評価しようとしていますが、評価するのではなく割り当てようとしています。

は、この問題を解決するには、次の

if ($request){ 
    if ($request->user()->role == 'Admin'){ 
     return "yes"; 
    } 
} 

は、あなたが提供している静的な文字列で指定した値を比較する「==」演算子を使用します。

+0

ありがとうございますが、これはユーザーがゲストの場合は機能しません – master

関連する問題