谜题石 / 破壳-acl
一个代理 Laminas ACL 模块
Requires
- php: ^7.3
- container-interop/container-interop: ^1.2
- laminas/laminas-permissions-acl: ^2.7
- laminas/laminas-servicemanager: ^3.4
Requires (Dev)
- laminas/laminas-config: ^3.3
- phpmd/phpmd: ^2.8
- phpunit/phpunit: ^9.1
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-29 05:36:13 UTC
README
一个 Laminas 模块,允许在查询时选择性填充 Laminas ACL
有时你的项目有很多角色、资源和规则。此模块为这些功能提供了插件管理器,并且只请求和加载 ACL 中回答查询所需的最小对象。
安装
此模块使用 composer 进行安装。有关 composer 文档,请参阅 getcomposer.org。
composer require riddlestone/brokkr-acl
用法
此模块添加了四个插件管理器,你的模块/项目可以为这些中的任何一个提供配置。
角色管理器
要为 ACL 提供角色,实现 Laminas\ServiceManager\FactoryInterface
,然后将您的类添加到 acl_role_manager
配置中
<?php return [ 'acl_role_manager' => [ 'abstract_factories' => [ 'My\\Factory', ], ], ];
当 ACL 需要一个角色时,您的工厂将被询问是否能提供它。
角色关系管理器
为了允许项目和模块定义角色之间的关系,角色关系管理器收集有关特定角色的父角色信息。
要提供关于角色的父系信息,实现 RoleRelationshipProviderInterface
,并将其注册为 acl_role_relationship_manager
配置中的提供者
<?php return [ 'acl_role_relationship_manager' => [ 'factories' => [ 'My\\Provider' => 'My\\Provider\\Factory', ], 'providers' => [ 'My\\Provider', ], ], ];
将提供者与生产它们的工厂分开指定,允许我们使用通过抽象工厂创建的提供者,或者在其他情况下注入到插件管理器中。
资源管理器
要为 ACL 提供资源,实现 Laminas\ServiceManager\FactoryInterface
,然后将您的类添加到 acl_resource_manager
配置中
<?php return [ 'acl_resource_manager' => [ 'abstract_factories' => [ 'My\\Factory', ], ], ];
当 ACL 需要一个资源时,您的工厂将被询问是否能提供它。
规则管理器
为了允许项目和模块指定权限,规则管理器收集有关哪些规则适用于特定角色和资源的信息。
要提供规则,实现 RuleProviderInterface
,并将其注册为 acl_rule_manager
配置中的提供者
<?php return [ 'acl_rule_manager' => [ 'factories' => [ 'My\\Provider' => 'My\\Provider\\Factory', ], 'providers' => [ 'My\\Provider', ], ], ];
将提供者与生产它们的工厂分开指定,允许我们使用通过抽象工厂创建的提供者,或者在其他情况下注入到插件管理器中。
查询 ACL
一旦所有管理器都配置好了,您可以通过从 ServiceManager 中拉取它并调用 isAllowed()
来查询 ACL。
<?php use Laminas\ServiceManager\ServiceManager; use Riddlestone\Brokkr\Acl\Acl; /** * @var ServiceManager $serviceManager */ $acl = $serviceManager->get(Acl::class); $isAllowed = $acl->isAllowed('some_role', 'a_resource', 'view');