2016-08-25 3 views
0

Я новичок в laravel. Я использую поручение Роли и разрешения, которые работают нормально, но теперь мне нужно добавить каждую роль, как у администратора есть свои controller и view. У Superadmin должен быть свой собственный контроллер и просмотр.Как получить доступ к контроллеру на основе ролей и просмотреть с помощью правдоподобия

Может ли кто-нибудь мне помочь? Как получить доступ к разрешению на основе 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']]); 

ответ

0

вы должны использовать Entrust в вашем промежуточное программное routes.php. добавьте маршруты «superadmin» в промежуточное ПО «superadmin», «admin» в промежуточном программном обеспечении «admin» и т. д. и после этого положите «else».

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

Я пробовал ваш код, но не перенаправляюсь к определенному маршруту, ... что мне делать? –

 Смежные вопросы

  • Нет связанных вопросов^_^