Is it possible to access route parameters within a filter?
e.g. I want to access the $agencyId parameter:
Route::group(array('prefix' => 'agency'), function() { # Agency Dashboard Route::get('{agencyId}', array('as' => 'agency', 'uses' => 'Controllers\Agency\DashboardController@getIndex')); });
I want to access this $agencyId parameter within my filter:
Route::filter('agency-auth', function() { // Check if the user is logged in if ( ! Sentry::check()) { // Store the current uri in the session Session::put('loginRedirect', Request::url()); // Redirect to the login page return Redirect::route('signin'); } // this clearly does not work..? how do i do this? $agencyId = Input::get('agencyId'); $agency = Sentry::getGroupProvider()->findById($agencyId); // Check if the user has access to the admin page if ( ! Sentry::getUser()->inGroup($agency)) { // Show the insufficient permissions page return App::abort(403); } });
Just for reference i call this filter in my controller as such:
class AgencyController extends AuthorizedController { /** * Initializer. * * @return void */ public function __construct() { // Apply the admin auth filter $this->beforeFilter('agency-auth'); } ...
Input::get
can only retrieve GET
or POST
(and so on) arguments.
To get route parameters, you have to grab Route
object in your filter, like this :
Route::filter('agency-auth', function($route) { ... });
And get parameters (in your filter) :
$route->getParameter('agencyId');
(just for fun) In your route
Route::get('{agencyId}', array('as' => 'agency', 'uses' => 'Controllers\Agency\DashboardController@getIndex'));
you can use in the parameters array 'before' => 'YOUR_FILTER'
instead of detailing it in your constructor.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With