2017-01-05 9 views
0

ユーザが管理者かエディタかを確認するミドルウェアを作成しましたが、何らかの理由でif演算子を使用してユーザがアクセス権を持っているかどうかを確認するときに何らかの理由で最初のプロパティー・ステートメントは、OR演算子の後にはありません。ミドアウェア管理リダイレクト認証

私は仕事をするには、それぞれの勘定科目の条件を分ける必要があります。例えば

コードいけない仕事:作品

public function handle($request, Closure $next) 
    { 
     if(Auth::user()->account_type_id == '1' || Auth::user()->account_type_id == '2') // is an admin 
      { 
       return $next($request); // pass the admin 
      } 


     return redirect('/admin'); // not admin. redirect whereever you like 
    } 

コード:

public function handle($request, Closure $next) 
    { 
     // dd($request->all()); 
      if(Auth::user()->account_type_id == '1') // is an admin 
      { 
       return $next($request); // pass the admin 
      } 

     if(Auth::user()->account_type_id == '2') // is an admin 
      { 
       return $next($request); // pass the admin 
      } 


     return redirect('/admin'); // not admin. redirect whereever you like 
    } 

は誰がノーいただきました!間違っていますか?

+0

どう '程度であれば((認証::ユーザーを()試してみる正常に動作します - > account_type_id == '1')||(Auth :: user() - > account_type_id == '2')) '? – EMBarbosa

答えて

0

私は配列を作成し、可能な解決策の配列を再び条件をチェックします。

public function handle($request, Closure $next) 
    { 
     $accountTypes = array('1','2'); 

     if (in_array(Auth::user()->account_type_id, $accountTypes)) { 
     return $next($request); // pass the admin 
     } 

     return redirect('/admin'); // not admin 
    } 
0

これはまた、あなたのコードをより読みやすく、保守が容易になります、in_array機能を使用してみてください。二番目の作品が、ここでは私がある理由

public function handle($request, Closure $next) 
{ 
    if (in_array(Auth::user()->account_type_id, ['1', '2'])) // is an admin 
    { 
     return $next($request); // pass the admin 
    } 

    return redirect('/admin'); // not admin. redirect whereever you like 
} 
0

私は知らないし、それが

public function handle($request, Closure $next) 
{ 

    $user = $request->user(); 
    if ($user->role == 1 || $user->role == 2) { 
     return $next($request); 
    } 
    else{ 
    return redirect(url('/admin')); 
    } 
} 
関連する問題