myzero1 / yii-permission
一个支持如Yii中RBAC访问控制模型的授权库。它基于Casbin。
dev-master
2023-11-09 10:28 UTC
Requires
- casbin/casbin: ~3.1
- yiisoft/yii2: ~2.0.14
Requires (Dev)
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ~7.0
- yiisoft/yii2-app-basic: ~2.0.14
This package is not auto-updated.
Last update: 2024-09-13 12:49:28 UTC
README
在Yii 2.0 PHP框架中使用Casbin。
安装
获取Composer包
在您的Yii 2.0项目的composer.json
中要求此包。这将下载包。
composer require casbin/yii-permission
配置应用
为了使用此扩展,您需要在您的应用配置中配置Casbin
类。
return [
//....
'components' => [
'permission' => [
'class' => \yii\permission\Permission::class,
/*
* Casbin model setting.
*/
'model' => [
// Available Settings: "file", "text"
'config_type' => 'file',
'config_file_path' => '/path/to/casbin-model.conf',
'config_text' => '',
],
// Casbin adapter .
'adapter' => \yii\permission\Adapter::class,
/*
* Casbin database setting.
*/
'database' => [
// Database connection for following tables.
'connection' => '',
// CasbinRule tables and model.
'casbin_rules_table' => '{{%casbin_rule}}',
],
],
]
];
用法
快速入门
安装完成后,您可以执行如下操作
$permission = \Yii::$app->permission;
// adds permissions to a user
$permission->addPermissionForUser('eve', 'articles', 'read');
// adds a role for a user.
$permission->addRoleForUser('eve', 'writer');
// adds permissions to a rule
$permission->addPolicy('writer', 'articles','edit');
您可以使用如下方式检查用户是否有权限
// to check if a user has permission
if ($permission->enforce("eve", "articles", "edit")) {
// permit eve to edit articles
} else {
// deny the request, show an error
}
使用Enforcer API
它提供了一套丰富的API,以方便对策略的各种操作。
获取所有角色
$permission->getAllRoles(); // ['writer', 'reader']
获取策略中的所有授权规则。
$permission->getPolicy();
获取用户拥有的角色。
$permission->getRolesForUser('eve'); // ['writer']
获取具有角色的用户。
$permission->getUsersForRole('writer'); // ['eve']
确定用户是否有角色。
$permission->hasRoleForUser('eve', 'writer'); // true or false
为用户添加角色。
$permission->addRoleForUser('eve', 'writer');
为用户或角色添加权限。
// to user
$permission->addPermissionForUser('eve', 'articles', 'read');
// to role
$permission->addPermissionForUser('writer', 'articles','edit');
为用户删除角色。
$permission->deleteRoleForUser('eve', 'writer');
删除用户的所有角色。
$permission->deleteRolesForUser('eve');
删除角色。
$permission->deleteRole('writer');
删除权限。
$permission->deletePermission('articles', 'read'); // returns false if the permission does not exist (aka not affected).
为用户或角色删除权限。
$permission->deletePermissionForUser('eve', 'articles', 'read');
删除用户或角色的权限。
// to user
$permission->deletePermissionsForUser('eve');
// to role
$permission->deletePermissionsForUser('writer');
获取用户或角色的权限。
$permission->getPermissionsForUser('eve'); // return array
确定用户是否有权限。
$permission->hasPermissionForUser('eve', 'articles', 'read'); // true or false
有关更多API,请参阅Casbin API。
定义自己的model.conf
学习Casbin
您可以在网站上找到Casbin的完整文档。
myzero1/yii-permission
一个支持如Yii中RBAC访问控制模型的授权库。它基于casbin。在网站上。
rbac
sadf