lengbin / yii-rbac
yii rbac 扩展
dev-master
2021-02-19 10:37 UTC
Requires
- php: >=7.2.0
- lengbin/auth: dev-master
This package is auto-updated.
Last update: 2024-09-19 18:33:44 UTC
README
Yii Rabc
这是基于yii-rbac修改并抽离的扩展版本,配合auth可进行鉴权、权限验证。
安装
安装此扩展的首选方式是通过 composer。
可以运行以下命令
composer require lengbin/yii-rbac
或者在您的 composer.json
文件的 require 部分添加
"lengbin/yii-rbac": "*"
to
使用方法
用法与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'; } }
其他
有问题请及时联系我,反正也会在使用中修复 - - !