0
votes

I'm new in laravel.I am using entrust Roles and permission which is working fine, but now I need to add every role like admin has his own controller and view. Superadmin should have his own controller and view.

Can anyone please help me? How to access permission based controller and view using entrust.

This is how I tried:

    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', 'HomeController@index');

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

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

1 Answers

0
votes

you should use Entrust middlewares in your routes.php. add "superadmin" routes in "superadmin" middleware, "admin" routes in "admin" middleware, etc. and put the "else" case after all these.

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!');
});