ripaclub / aclman
一个用于管理访问控制列表(ACL)的库
v0.3.0
2017-01-28 13:50 UTC
Requires
- php: >=5.4.0
- zendframework/zend-permissions-acl: ~2.3
- zendframework/zend-servicemanager: ~2.3
Requires (Dev)
- phpunit/phpunit: ~4.2
- satooshi/php-coveralls: dev-master
- zendframework/zend-mvc: ~2.5.1
This package is not auto-updated.
Last update: 2024-09-14 16:13:37 UTC
README
AclMan是一个PHP库,用于管理访问控制列表(ACL)。
要求
-
PHP >= 5.4
-
Composer
特性
AclMan具有各种特性
-
断言
它提供了一个
AssertionPluginManager
,其目标是提供断言(即AssertionInterface
对象) -
权限
包含一个
GenericPermission
类,它是一个权限选项的容器(例如,一个角色、一个资源、一个特权、一个断言) -
资源和角色
它提供了一套特质,旨在检查资源和角色的有效性,并实例化它们的相关类
-
存储
AclMan允许您通过
StorageInterface
对象和适配器(例如,ArrayAdapter
)在多层持久性中保存ACL配置 -
服务
一套旨在实例化ACL对象的类
安装
将ripaclub/aclman
添加到您的composer.json
文件中。
{
"require": {
"ripaclub/aclman": "~0.2.0"
}
}
配置
AclMan库只有两个配置节点
-
aclman_storage
用于配置保存ACL规则的持久化层 -
aclman_services
用于配置您的服务(例如,存储和可选的插件管理器)
使用(1)
因此,这是一个使用示例。您首先需要配置工厂。
将此PHP数组放入您的配置文件中。
'abstract_factories' => [ 'AclMan\Service\ServiceFactory', 'AclMan\Storage\StorageFactory' ], 'factories' => [ 'AclMan\Assertion\AssertionManager' => 'AclMan\Assertion\AssertionManagerFactory' ]
然后我们配置我们的服务。
'aclman_services' => [ 'AclService\Ex1' => [ 'storage' => 'AclStorage\Ex1', 'plugin_manager' => 'AclMan\Assertion\AssertionManager', ], ] 'aclman-assertion-manager' => [ 'invokables' => [ 'assertAlias' => 'assertionClass', ... ... ] ]
最后,我们的存储配置。
'aclman_storage' => [ 'AclStorage\Ex1' => [ 'roles' => [ // Config specific permission for role Role1 to resources Resource1 and Resource2 'Role1' => [ 'resources' => [ 'Resource1' => [ [ 'assert' => null, 'allow' => true, 'privilege' => 'add' ] ], 'Resource2' => [ [ 'assert' => [ 'assertAlias' => [ 'config' => 'test' ], ], 'allow' => true, 'privilege' => 'view' ] ] ], ], // Config specific permission for all roles to resource Resource1 (e.x public resource) StorageInterface::ALL_ROLES => [ 'resources' => [ 'Resource3' => [ [ 'allow' => true, ] ], ] ], // Config specific permission for Admin to all resource (e.x access to al resource to the admin) 'Admin' => [ 'resources' => [ StorageInterface::ALL_RESOURCES => [ [ 'allow' => true, ] ], ] ], ], ], ]
我们的第一个ACL配置现在已完成。使用它
$aclService1 = $serviceLocator->get('AclService\Ex1'); $aclService1->isAllowed('Role1', 'Resource1', 'view'); // FALSE $aclService1->isAllowed('Role1', 'Resource1', 'add'); // TRUE // ...
注意行为...
$aclService1 = $serviceLocator->get('AclService\Ex1'); $aclService1->isAllowed('Role1', 'Resource1', 'add'); // TRUE $aclService1->isAllowed('Role1', 'Resource2', 'view'); // FALSE // ...