Filtro de rota laravel para verificar as funções dos usuários

Eu estou construindo uma api repousante no laravel 4 onde há usuários com diferentes tipos de permissão. Eu quero restringir o access a rotas diferentes dependendo da function do usuário (que é salvo na tabela do usuário no db)

Como eu faria isso? Aqui está o que tenho até agora (não está funcionando até agora).

filters.php

//allows backend api access depending on the user's role once they are logged in Route::filter('role', function() { return Auth::user()->role; }); 

route.php

  Route::group(array('before' => 'role'), function($role) { if($role==1){ Route::get('customer/retrieve/{id}', 'CustomerController@retrieve_single'); Route::post('customer/create', 'CustomerController@create'); Route::put('customer/update/{id}', 'CustomerController@update'); } }); 

É possível que eu esteja escrevendo a syntax incorreta para um “filtro de grupo”?

Experimente o seguinte:

filters.php

 Route::filter('role', function() { if ( Auth::user()->role !==1) { // do something return Redirect::to('/'); } }); 

route.php

  Route::group(array('before' => 'role'), function() { Route::get('customer/retrieve/{id}', 'CustomerController@retrieve_single'); Route::post('customer/create', 'CustomerController@create'); Route::put('customer/update/{id}', 'CustomerController@update'); }); 

Existem diferentes maneiras de implementar isso, para começar os filtros de rota aceitam argumentos:

 Route::filter('role', function($route, $request, $value) { // }); Route::get('someurl', array('before' => 'role:admin', function() { // })); 

O acima irá injetar admin no seu filtro Route ::, acessível através do parâmetro $ value. Se você precisar de filtragem mais complicada, você sempre pode usar uma class de filtro de rota personalizada (verifique Classes de filtro): http://laravel.com/docs/routing#route-filters

Você também pode filtrar dentro do seu controlador, o que fornece uma abordagem melhor quando você precisa filtrar com base em controladores e methods específicos: http://laravel.com/docs/controllers#controller-filters

Finalmente, você pode usar algo como o Sentry2, que fornece uma solução RBAC completa para usar no seu projeto: https://cartalyst.com/manual/sentry

De laravel 5.1.11 você pode usar o AuthServiceProvider: https://laravel.com/docs/5.1/authorization