lengbin/yii-rbac

yii rbac extension

dev-master 2021-02-19 10:37 UTC

This package is auto-updated.

Last update: 2024-04-19 17:41:53 UTC


README

993323

Yii Rabc


这是基于yii-rbac修改抽离扩展版本 配合 auth 可做鉴权 权限验证

安装

The preferred way to install this extension is through composer.

Either run

composer require lengbin/yii-rbac

or add

"lengbin/yii-rbac": "*"

to the require section of your composer.json file.

Usage

用法和yii 是一致的

如果使用Db驱动 请导入sql

        
        // 缓存cache 
        $manager = new PhpManager(new ClassNameRuleFactory(), $this->container->get(CacheInterface::class));
        // 文件
//        $manager = new PhpManagerFile(new ClassNameRuleFactory());
       // 数据库
//        $manager = new DbManager(new ClassNameRuleFactory(), new Connection($this->container), null, $this->container->get(LoggerInterface::class)->get());


        $manager->add(new Permission('createPost'));
        $manager->add(new Permission('readPost'));
        $manager->add(new Permission('deletePost'));

        $manager->add(new Role('author'));
        $manager->add(new Role('reader'));

        $manager->addChild($manager->getRole('reader'), $manager->getPermission('readPost'));

        $manager->addChild($manager->getRole('author'), $manager->getPermission('createPost'));

        $manager->addChild($manager->getRole('author'), $manager->getRole('reader'));

        $manager->assign($manager->getRole('author'), "100");

        if ($manager->userHasPermission("100", 'createPost')) {
            echo 'author has permission createPost';
        }

        $manager->add(new ActionRule());
        $manager->add((new Permission('viewList'))->withRuleName('action_rule'));

        $manager->addChild($manager->getRole('author'), $manager->getPermission('viewList'));

        var_dump($manager->userHasPermission('100', 'viewList', ['action' => 'home']), $manager->userHasPermission('100', 'viewList', ['action' => 'home2']));

        var_dump($manager->getPermission('createPost')->getAttributes(), $manager->getRoles(), $manager->getRules());

        var_dump($manager->getPermissions());
        $manager->remove(new Permission('viewList'));
        var_dump($manager->getPermissions());

        $manager->removeAll();
        // 菜单
        $manager->add(new Menu('一级菜单'));
        $manager->remove(new Menu('一级菜单'));
        $manager->getMenu("一级菜单");
// 规则
class ActionRule extends Rule
{
    public function __construct()
    {
        parent::__construct('action_rule');
    }

    public function execute(string $userId, Item $item, array $parameters = []): bool
    {
        return isset($parameters['action']) && $parameters['action'] === 'home';
    }
}

其他

有问题请及时联系我,反正也会在使用中修复 - - !