bearsunday / acl-resource
1.x-dev
2018-01-22 04:57 UTC
Requires
- php: >=7.0.0
- bear/resource: ^1.9
- ray/role-module: ^0.1.0
Requires (Dev)
- bear/qatools: ^1.4.7
This package is auto-updated.
Last update: 2024-09-07 06:49:27 UTC
README
BEAR.Sunday 的 ACL 内嵌资源模块
此模块将对应于 ACL 的应用程序资源内嵌到指定的页面资源中。与硬编码并内嵌应用程序资源的 @Embedded
注解不同,此模块基于配置内嵌资源。您可以更改资源树而无需更改源代码。
安装
Composer 安装
$ composer require bearsunday/acl-resource 1.x-dev
模块安装
use Ray\Di\AbstractModule; use Ray\TestDouble\TestDoubleModule; use Ray\RoleModule\RoleProviderInterface; class DevRoleProvider implements RoleProviderInterface { // provide role public function get() { return 'guest'; } } class AppModule extends AbstractModule { protected function configure() { // configure ACL $acl = new Acl(); $roleGuest = new Role('guest'); $acl->addRole($roleGuest); $acl->addRole(new Role('owner'), $roleGuest); $acl->addResource(new Resource('app://self/entries')); $acl->addResource(new Resource('app://self/users')); $acl->addResource(new Resource('app://self/comments')); $acl->allow('guest', ['app://self/entries', 'app://self/comments']); $acl->allow('admin', 'app://self/friends'); // configure embedded resource list $resources = [ 'page://self//blog' => [ 'app://self/entries', 'app://self/comments', 'app://self/friends' ], 'page://self//admin/setting' => [ 'app://self/user{?id}', 'app://self/freinds?user_id={id}' ] ]; // define provider $roleProviderClass = DevRoleProvider::class; // install module $this->install(new AclResourceModule($acl, $resources, $roleProviderClass)); } }
$acl
拥有 Zend\Permissions\Acl 指定的 ACL(访问控制列表)。使用addResource
指定$acl
可用的应用程序资源的所有 URI 路径,并使用allow()
/disallow()
方法指定可访问或不可访问的角色的应用程序资源。$resources
是一个列表,其中包含了每个页面资源可以嵌入的应用程序资源。$roleProviderClass
指定返回当前用户角色的类名(例如,从登录状态获取)。您需要实现RoleProviderInterface
。
在上述示例中,当使用 guest
权限访问 /blog
页面时,请求对象 app://self/entries
和 app://self/comments
被设置为 $body['entries']
,$body['comments']
。