Buduję dość obszerną aplikację dla klienta i będę musiał stworzyć pewien rodzaj kontroli uprawnień grupowych. Postanowiłem pójść z Cartalyst i ich pakietem Sentry.
Jak dotąd tak dobrze!Filtr akcji dla każdej metody w kontrolerze Laravel
Teraz mam problem, jaki jest najlepszy sposób na wykrycie uprawnień grupy użytkowników, ponieważ istnieje więcej niż jeden, więc nie mogę po prostu użyć jednego filtra i zrobić z nim.
Na przykład, chciałbym zrobić coś takiego:
przypadku stron, które wymagają dostępu na poziomie administratora
Route::group(array('before' => 'is_admin'), function()
{
Route::get('admin', array('as'=>'admin', 'uses'=>'[email protected]'));
// Other methods that require admin-level access
});
dla stron, które potrzebują dostępu moretaor poziomu i tak dalej ..
Route::group(array('before' => 'is_moderator'), function()
{
Route::get('orodja/plosca', array('as'=>'moderator', 'uses'=>'[email protected]'));
// Other methods that require moderator-level access
});
Problem, który mam z tym podejściem polega na tym, że musiałbym zdefiniować nową trasę dla każdego działania kontrolera i to naprawdę nie wygląda na najlepszą praktykę Dla mnie.
Następnie pomyślałem o zarejestrowaniu wszystkich kontrolerów za pomocą Controller::detect()
i sprawiłam, że są one REST-pełne, ale tutaj problem polega na tym, że mogę zastosować filtr tylko do metody konstruktora kontrolera, a nie do pojedynczej akcji. Co się stanie, jeśli mam metodę z innym poziomem dostępu w jednym kontrolerze?
Moje pytanie brzmi: Jaki jest najlepszy sposób obejścia tego problemu i czy istnieje sposób zastosowania filtru akcji do pojedynczej metody kontrolera, a nie do konstruktora kontrolera.
Dzięki i przepraszam za mój angielski!
Polecam stosowanie podejścia sugerowanego przez Adrenaxus, w ogóle nie używaj 'Controller :: detect'. Nawet jeśli początkowo wygląda dziwnie, definiowanie każdej trasy lub nawet każdy kontroler daje większą swobodę, jest mniej powikłany i bardziej wydajny. Btw, 'Controller :: detected' został całkowicie usunięty z L4. – vFragosop