lengbin / yii-rbac
yii rbac extension
Installs: 24
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/lengbin/yii-rbac
Requires
- php: >=7.2.0
- lengbin/auth: dev-master
This package is auto-updated.
Last update: 2025-10-19 20:37:24 UTC
README
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'; } }
其他
有问题请及时联系我,反正也会在使用中修复 - - !