Is it possible to add multiple filters on a group route in Laravel 4?
I have 2 authentification methods for an API centric application. One with standard authentific
You can do that with laravel
Route::group(array('prefix' => 'api/', 'before' => 'filter1|filter2'), function()
{
Route::get('api1', function()
{
// Has Filter1 and filter2
});
Route::get('api2', function()
{
// Has filter1 and filter2
});
});
check the documentation for more details
You can:
Route::group(['before' => 'auth|csrf'], function()
{
//
});
However if you want to make it accesible if either of the filters passes, you'd have to write a little bit more (in filters.php):
function csrfFilter()
{
if (Session::token() != Input::get('_token'))
{
throw new Illuminate\Session\TokenMismatchException;
}
}
function authFilter()
{
if (Auth::guest()) return Redirect::guest('login');
}
Route::filter('csrf-or-auth', function ()
{
$value = call_user_func('csrfFilter');
if ($value) return $value;
else return call_user_func('authFilter');
});
In routes.php
Route::group(['before' => 'csrf-or-auth'], function()
{
//
});
Remember you have to return nothing when the filter passes. I hope this helps you!