advanced-store/access-filter

此包已被废弃且不再维护。未建议替代包。

创建简单的访问过滤器功能。

dev-master 2015-10-20 13:50 UTC

This package is not auto-updated.

Last update: 2020-02-21 15:50:25 UTC


README

Creative Commons License
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议授权。

访问过滤器

此包为laravel添加功能,允许您为路由创建和使用简单的权限过滤器。

1. 安装

通过Composer

首先将以下行添加到您的 composer.json 文件中。

"advanced-store/access-filter": "dev-master"

在您的CLI中运行此命令。

composer update

2. 配置

发布包配置

如果您是首次安装,请运行以下命令。


    php artisan config:publish advanced-store/access-filter

编辑配置文件accessFilterConfig并添加userPermissions。这些应来自您的Sentry/User模型,或为测试目的而硬编码。将来,这些将通过ad4mat API客户端提取。

将以下行添加到您的app.php。

提供者


    'AdvancedStore\AccessFilter\AccessFilterServiceProvider',

别名


    'YourAlias' => 'AdvancedStore\AccessFilter\Facades\AccessFilterFacade',

编辑配置文件permissionList.php并插入您的路由名称以及用户必须拥有的最深层最小权限才能访问此路由。

我的权限命名约定是


        [{SystemName}].{ApplicationName}.{Root}.{SubScope}.[0..* {SubScope}]

示例

路由名称为"admin/users",所需权限可以是"myApplicationName.admin.users.listAll"。配置数组将如下所示。

    
        return [
            "admin/users"   =>  [
                "myApplicationName.admin.users.listAll",
            ],
        ]
    

也可以设置多个同等级别的子权限。用户只需要拥有其中之一。注意,我更喜欢使用点命名法为我的路由名称。


    return [
        "admin.users.index" =>  [
            "ad4mat.admin.users.read",
            "ad4mat.admin.users.self",
        ],
    ]

    

如果用户应该有机会获取访问users.index路由的权限,但他只能看到自己的个人资料或所有资料,您可以在控制器中决定这一点。

3. 使用

要检查特定的权限,例如,如果您想在侧边栏菜单中显示特定元素。

结构


    YourAlias::hasPermission( permissionString )

以下是我代码的示例

@if( AccessFilter::hasPermission('ad4mat.admin.roles.read') )

如果您想用它来保护资源/路由,那么您创建一个调用filter方法的过滤器并将其添加到您喜欢的任何资源/路由。

创建过滤器

O2Client是我对oauth2-client包的别名,它会在实际过滤器检查之前检查有效令牌的存在。


    Route::filter('accessFilter', function(){
    if( O2Client::hasValidAccessToken() == false )
        return Redirect::guest('logout');

    return AccessFilter::filter();
});</code>

注意,Laravel只有在您使用单一路由时才会为资源创建路由名称。如果您使用单一路由,您必须自己添加它们。这些路由将与配置数组匹配。