advanced-store/oauth2-access-filter

此包已被弃用,不再维护。未建议替代包。

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

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

This package is not auto-updated.

Last update: 2020-01-24 15:41:10 UTC


README

Creative Commons License
此作品根据Creative Commons Attribution-NonCommercial-NoDerivatives 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 并添加用户权限。这些可以来自您的 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') )

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

创建过滤器

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


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

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

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