0
我在laravel
新。我正在使用委託角色和許可工作正常,但現在我需要添加每個角色像管理員有他自己的controller
和view
。 Superadmin應該有他自己的控制器和視圖。如何訪問基於角色的控制器和查看使用entrust
任何人都可以幫我嗎? 如何使用委託訪問基於controller
和view
的權限。
這是我嘗試:
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']]);
我會檢查你的答案,但我腦子裏有一個問題,爲什麼我們沒有使用Entrust :: hasRole來檢查用戶角色名稱? Fatemeh –
一般來說,路由文件中不應該有if/else這樣的邏輯。這個文件應該只有路由的責任。但爲什麼它沒有工作?老實說,我不確定,因爲我之前沒有在路由文件中看到過這種邏輯。但我認爲原因應該是我們不能像Entrust那樣在路徑文件中使用特殊的類。你有沒有注意到頂部沒有進口聲明?一般規則通常不適用於這個特殊文件。 –
我試過你的代碼,但沒有重定向到特定的路由,我該怎麼辦? –