2016-08-25 42 views
0

我在laravel新。我正在使用委託角色和許可工作正常,但現在我需要添加每個角色像管理員有他自己的controllerview。 Superadmin應該有他自己的控制器和視圖。如何訪問基於角色的控制器和查看使用entrust

任何人都可以幫我嗎? 如何使用委託訪問基於controllerview的權限。

這是我嘗試:

Route::group(['middleware' => ['auth']], function() { 
if(Entrust::hasRole('superadmin')) { 
      return View::make('superadmin'); 
     } 
     else if(Entrust::hasRole('Admin')) { 
      return View::make('admin'); 
     } 
     else { 
      Auth::logout(); 
      return Redirect::to('/login') 
       ->with('flash_notice', 'You don\'t have access!'); 
     } 


    Route::get('/home', '[email protected]'); 

    Route::resource('users','UserController'); 

    Route::get('roles',['as'=>'roles.index','uses'=>'[email protected]','middleware' => ['permission:role-list|role-create|role-edit|role-delete']]); 
    Route::get('roles/create',['as'=>'roles.create','uses'=>'[email protected]','middleware' => ['permission:role-create']]); 
    Route::post('roles/create',['as'=>'roles.store','uses'=>'[email protected]','middleware' => ['permission:role-create']]); 
    Route::get('roles/{id}',['as'=>'roles.show','uses'=>'[email protected]']); 
    Route::get('roles/{id}/edit',['as'=>'roles.edit','uses'=>'[email protected]','middleware' => ['permission:role-edit']]); 
    Route::patch('roles/{id}',['as'=>'roles.update','uses'=>'[email protected]','middleware' => ['permission:role-edit']]); 
    Route::delete('roles/{id}',['as'=>'roles.destroy','uses'=>'[email protected]','middleware' => ['permission:role-delete']]); 

回答

0

,你應該在你的routes.php文件使用委託中間件。在「superadmin」中間件中添加「superadmin」路由,在「admin」中間件中添加「admin」路由等,並將「其他」情況放在後面。

Route::group(['middleware' => ['role:superadmin']], function() { 
    Route::get('/someroute', function(){ 
     return View::make('superadmin'); 
    }); 
}); 

Route::group(['middleware' => ['role:admin']], function() { 
    Route::get('/someroute', function(){ 
     return View::make('admin'); 
    }); 
}); 

Route::get('/someroute', function(){ 
    Auth::logout(); 
     return Redirect::to('/login') 
      ->with('flash_notice', 'You don\'t have access!'); 
}); 
+0

我會檢查你的答案,但我腦子裏有一個問題,爲什麼我們沒有使用Entrust :: hasRole來檢查用戶角色名稱? Fatemeh –

+0

一般來說,路由文件中不應該有if/else這樣的邏輯。這個文件應該只有路由的責任。但爲什麼它沒有工作?老實說,我不確定,因爲我之前沒有在路由文件中看到過這種邏輯。但我認爲原因應該是我們不能像Entrust那樣在路徑文件中使用特殊的類。你有沒有注意到頂部沒有進口聲明?一般規則通常不適用於這個特殊文件。 –

+0

我試過你的代碼,但沒有重定向到特定的路由,我該怎麼辦? –

相關問題