0

私はLaravel 5.2のCartalyst Sentinelを使用して役割認可を活用するLaravel初心者(非常に初心者)です。LaravelとSentinel:承認ミドルミドルウェア

私は3つ(以上)の役割を持っています。つまり、 "admin"、 "agent"、 "writer"です。

私はまた、このような混合役割へのアクセスを持っていなければならないいくつかのセクション、すなわちあります(すべてのロールへのアクセス:管理者、エージェント、ライター)

  • ダッシュボード(へのアクセス:管理者)
  • ユーザー
  • 注文(へのアクセス:管理者、エージェント)
  • ページ(へのアクセス:管理者、作家)
  • no_admin_here(へのアクセス:エージェント、ライター)

現時点では私は2つの役割だけで動作するように管理していましたが、今は固まっています。 (Kernel.phpに 'チェック' という名前)

routes.phpの

// only authenticated users can access these pages 
Route::group(['prefix' => 'admin', 'as' => 'admin.', 'middleware' => ['check']], function(){ 

    // these pages are accessible to all roles 
    Route::get('dashboard', ['as' => 'dashboard', function(){ 
     return view('admin/dashboard'); 
    }]); 

    // only admin can access this section 
    Route::group(['middleware' => 'admin'], function(){ 

     Route::get('users', function(){ 
      return view('admin/users'); 
     }); 

    }); 

}); 

SentinelCheckミドルウェア

if (!Sentinel::check()) { // user is not authenticated 
    return redirect()->route('admin.login')->with('error', 'You must be logged to view the page'); 
} 
if (Sentinel::inRole('customer')) { // user is authenticated but he is a customer 
    return redirect()->route('admin.login')->with('error', 'You are a customer and cannot access to backend section'); 
} 

は、私がこれまで何をやったか(私は必要なコードを置きます) (Kernel.phpの '管理者' という名前)

SentinelAdminミドルウェア

if (!Sentinel::inRole('admin')) { // user is authenticated but he is not an admin 
    return redirect()->route('admin.login')->with('error', 'You are not admin and cannot view requested section'); 
} 

SentinelAgentミドルウェア(Kernel.phpの名前付き「エージェント」)

if (!Sentinel::inRole('agent')) { // user is authenticated but he is not an agent 
    return redirect()->route('admin.login')->with('error', 'You are not agent and cannot view requested section'); 
} 

これまでのところ、私が言ったように、良いが、物事を台無し私は役割をミックスしようとすると、 「エージェント」は、「管理者」ミドルウェアは彼をブロックし、ログアウトしますので、セクションに到達することはありませんので、

// only admin and agent can access this section 
Route::group(['middleware' => ['admin', 'agent']], function(){ 

    Route::get('orders', function(){ 
     return view('admin/orders'); 
    }); 

}); 

:つまり私はこのようなルートを書き込むことはできません。

['middleware' => ['admin', 'writer']] 
['middleware' => ['agent', 'writer']] 
['middleware' => ['admin', 'writer', 'whatever_else_role']] 

など。

だから、私は簡単に役割を混在させることができている(簡単な)方法があるが、セクションにアクセスします。そして、同様に、私は他のすべての役割ミックスを行うことはできませんか?あなたの助けを事前に感謝

答えて