Laravel 4 给定命名路由的列表,检查用户有权访问的路由

Laravel 4 给定命名路由的列表,检查用户有权访问的路由,laravel-4,Laravel 4,如果我想构建一个基本菜单,是否有一个函数可以用来测试给定用户是否有权访问命名路由 如果没有,是否有从配置的路由提取筛选器的功能?我看到了功能,但我不知道如何先“加载”每条路线。这只是一个抽象的想法: 输出: 我的路线(根据示例): 这是从我的一个项目。希望你能得到你想要的想法。在foreach循环中,以下行返回一个beforeFilters数组: $beforeFilters = $route->beforeFilters(); 因此,您可以检查此数组以确定用户是否有权访问此路由。在我的

如果我想构建一个基本菜单,是否有一个函数可以用来测试给定用户是否有权访问命名路由

如果没有,是否有从配置的路由提取筛选器的功能?我看到了功能,但我不知道如何先“加载”每条路线。

这只是一个抽象的想法: 输出: 我的路线(根据示例):

这是从我的一个项目。希望你能得到你想要的想法。在
foreach
循环中,以下行返回一个
beforeFilters
数组:

$beforeFilters = $route->beforeFilters();
因此,您可以检查此数组以确定用户是否有权访问此路由。在我的情况下,我可以从数组中检查
权限
,以确定用户权限,如:

if( $beforeFilters && count($beforeFilters['permission']) ) {
    // Has permission, check for specific one now...
}
这是我的
权限
过滤器,它在发送路由之前检查权限(如果有帮助):

Route::group(array('before' => 'auth|permission:ladger'), function(){
    Route::post('/ladger/{group}/create', array( 'before' => 'permission:create_ladger', 'uses' => 'LadgerController@create', 'as' => 'ladger.create') );
    Route::post('/ladger/{group}/update', array( 'before' => 'permission:update_ladger', 'uses' => 'LadgerController@update', 'as' => 'ladger.update') );
});
$beforeFilters = $route->beforeFilters();
if( $beforeFilters && count($beforeFilters['permission']) ) {
    // Has permission, check for specific one now...
}
// Filter for Permission Checking
Route::filter('permission', function($route, $request, $required_perm){

    // Check if current user has all permissions
    if(currentUser()->is('admin') || (count(currentUser()->permissions) == Permission::count())) return;

    $currentUser = currentUser();
    $user_perms = $currentUser->permissions;

    // Check if user has any permission at all only if the
    // $required_perm is 'any'. With any permission, user
    // can go to the baack end/admin panel.
    if($required_perm == 'any' && count($user_perms)) return;

    // Check if user has any permission with given param,
    // i.e. "create_user" allows access to the user page
    // even if the user doesn't has other user related permissions
    // like, "edit_user" or "delete_user", checks word "_user"
    if($perms = $currentUser->hasAnyWith($required_perm)) return;

    // Check if user has given permission, i.e. "delete_user"
    if($currentUser->hasPermission($required_perm)) return;

    // If comes here then not a valid user
    // with required permission, so get off...
    try {

        return Redirect::back();

    } catch (InvalidArgumentException $e) {

        return Redirect::route('home'); 
    }

});