Daha önce yapmak istediğin şeyin daha karmaşığının sentry ile sorunsuz yaptım. Erişim yönetminin route değil de denetleyici methodları üzerinde yapmanı tavsiye ederim.
Sentry ile yapabilirsin..
Kullanıcı login olurken erişim haklarının güncelleyebilirsin. Güncelle sonucunda izni var ise erişeme izin verirsen vb.. devam eder.
Erişimleri filtrelemek için sentry olanakları yardımıyla basit bir filtre yaratırsın.
Bir projemden örnek. Örnekte, hasAccess adllı bir filtre tanımlanmış. Sentry yardımıyla kullanıcının erişmek istediği denetleyiciye(örn: DerslerController@show) izini olup olamdığı sorgulanıyor. Var ise sorun yok. Yok ise fitre erişimi engelliyor. Bu örnekte route name üzerine de bir filtreleme de yapılabilirdi. Genellike routes.php'de tanımlanan routes name üzeriden filtrelemeler yapıyorlar.
/**
* hasAcces filter (permissions)
*
* Check if the user has permission (group/user)
*/
Route::filter('hasAccess', function($route, $request)
{
try
{
$user = Sentry::getUser();
if( ! $user->hasAccess($route->getActionName())) {
// for ajax request
if ($request->ajax()) {
return \Response::json(['status' => false, 'login' => false]);
}
return Response::view('Muratsplat\mvc\view\flash::unauthorized', array('flash' => Lang::get('messages.unauthorized_long')), 401);
}
}
catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
{
// for ajax request
if ($request->ajax()) {
return \Response::json(['status' => false, 'login' => false]);
}
return Redirect::action('Muratsplat\mvc\controller\front\UserLoginController@getLogin');
}
});
Ya da..
Laravel'deki şu konu da senin muhtemel sorunlarını çözer.
http://laravel.gen.tr/docs/events
Yapmak istediğin şey laravel bilen biri için gayet kolaydır. Eğer zor gibi görünüyorsa laravel kullanmayı bilmiyorsundur. Öğenirsin. Ayıp değil.
Biz de bilmiyorduk, oturduk, çalıştık, dökümantasyonları kurcaladık. Tıkandığımız noktalarda laravel geliştirilerileri ya da tecrübesi iyi olan kullanıcılarda yardım istetik. Saolsunlar yardım da ettiler.
OpenSource camiasında işler böyle yürür.
Kolay gelsin..