yiisoft/rbac-rules-container

基于 "yiisoft/factory" 的 RBAC 规则容器

2.1.0 2024-03-07 10:57 UTC

This package is auto-updated.

Last update: 2024-09-22 13:05:20 UTC


README

Yii

Yii RBAC 规则容器


Latest Stable Version Total Downloads Build status Scrutinizer Code Quality Code Coverage Mutation testing badge static analysis type-coverage

本包是一个创建 Yii RBAC (基于角色的访问控制) 规则的工厂。它提供基于 Yii 工厂 的规则容器,并使用 Yii 定义 语法。RBAC 管理器接受规则名称和参数作为规则,并且设计上不知道其创建过程,委托给规则容器以保持职责分离。

需求

  • PHP 8.1 或更高版本。

安装

可以使用 Composer 安装此包

composer require yiisoft/rbac-rules-container

通用使用

直接与规则容器交互

use Psr\Container\ContainerInterface;
use Yiisoft\Rbac\Item;
use Yiisoft\Rbac\RuleInterface;
use Yiisoft\Rbac\Rules\Container\RulesContainer;

/**
 * Checks if user ID matches `authorID` passed via parameters.
 */
final class AuthorRule implements RuleInterface
{
    public function execute(string $userId, Item $item, array $parameters = []): bool
    {
        return $parameters['authorID'] === $userId;
    }
}

$rulesContainer = new RulesContainer(new MyContainer());
$rule = $rulesContainer->create(AuthorRule::class);
  • MyContainer 是一个解决依赖关系的容器,必须是 Psr\Container\ContainerInterface 的一个实例。也可以使用 Yii 依赖注入 的实现。
  • 您可以设置 定义 并在需要时禁用它们的验证。

基本上,参数与 Yii 工厂 中的一样。请参阅其文档以获取更多详细信息。

规则仅创建一次,然后缓存并重复使用。

$rule = $rulesContainer->create(AuthorRule::class); // Returned from cache

使用 Yii 配置

use Yiisoft\Di\Container;
use Yiisoft\Di\ContainerConfig;
use Yiisoft\Rbac\RuleFactoryInterface;
use Yiisoft\Rbac\Rules\Container\RulesContainer;

// Need to be moved to separate files accordingly
$params = [
    'yiisoft/rbac-rules-container' => [
        'rules' => ['author' => AuthorRule::class],
        'validate' => false,
    ],
];
$config = [
    RuleFactoryInterface::class => [
        'class' => RulesContainer::class,
        '__construct()' => [
            'definitions' => $params['yiisoft/rbac-rules-container']['rules'],
            'validate' => $params['yiisoft/rbac-rules-container']['validate'],
        ],
    ],
];          
$containerConfig = ContainerConfig::create()->withDefinitions($config); 
$container = new Container($containerConfig);
$rulesContainer = $container->get(RuleFactoryInterface::class);        
$rule = $rulesContainer->create('author');

文档

如果您需要帮助或有疑问,Yii 论坛 是一个好去处。您还可以查看其他 Yii 社区资源

许可证

Yii RBAC 规则容器是免费软件。它根据 BSD 许可证发布。有关更多信息,请参阅 LICENSE

Yii 软件 维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack