php - laravel how to create page restriction -


please tell me how restrict page using laravel,
have 3 users.
1. admin, 2. client, 3. partner
want if admin logged in open only- admin.index page
, if client logged in open only- client.index page

i used in route.php following code-

 route::group(array('before' => 'role'), function(){       route::resource('admin','admincontroller@index');       route::resource('client','clientcontroller@index');       route::resource('partner','partnercontroller@index');  });  

using above code if no user login it's coming properly,
, suppose if admin logged in, page redirect admincontroller but,
if hard coded (url) hit clientcontroller or partnercontroller http://localhost/laravel-login/public/client client page coming.
please tell me how avoid these
sorry english..

you may use different route filters each route , create individual filters, example:

route::group(array('before' => 'auth'), function() {     route::resource('admin','admincontroller@index');     route::resource('client','clientcontroller@index');     route::resource('partner','partnercontroller@index'); }); 

in each controller create __construct method , add filter like:

public function __construct() {     // in admincontroller     $this->beforefilter(function() {         if(auth::user()->role->name != 'admin') return redirect::to('/'); // home     }); } 

same way declare other filters in other controllers:

public function __construct() {     // in clientcontroller     $this->beforefilter(function() {         if(auth::user()->role->name != 'client') return redirect::to('/'); // home     }); } 

and on. check more on laravel website controller filtering.


Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -