casbin / hyperf-permission
Hyperf 中支持访问控制模型如 ACL、RBAC、ABAC 的授权库。
v1.0.0
2023-08-28 11:00 UTC
Requires
- php: >=7.2
- ext-swoole: >=4.5
- casbin/casbin: ~3.21
- hyperf/config: ~2.0.0
- hyperf/db-connection: ^2.0
This package is auto-updated.
Last update: 2024-08-28 13:18:39 UTC
README
Hyperf 中支持访问控制模型如 ACL、RBAC、ABAC 的授权库。
安装
在您的 Hyperf 项目的 composer.json
中要求此包。这将下载该包。
$ composer require casbin/hyperf-permission -vvv
要发布配置,运行供应商发布命令
$ php bin/hyperf.php vendor:publish casbin/hyperf-permission
这将创建一个新的模型配置文件,名为 config/autoload/casbin-rbac-model.conf
,一个新的权限配置文件,名为 config/autoload/permission.php
,以及一个新的迁移文件,名为 2020_07_22_213202_create_rules_table.php
。
要迁移迁移,运行迁移命令
$ php bin/hyperf.php migrate
这将创建一个新的名为 rules
的表。
用法
快速入门
安装后,您可以执行类似以下操作
use Hyperf\Permission\Casbin; $casbin = new Casbin(); // adds permissions to a user $casbin->addPermissionForUser('eve', 'articles', 'read'); // adds a role for a user. $casbin->addRoleForUser('eve', 'writer'); // adds permissions to a rule $casbin->addPolicy('writer', 'articles', 'edit');
您可以使用以下方式检查用户是否有权限
// to check if a user has permission if ($casbin->enforce('eve', 'articles', 'edit')) { // permit eve to edit articles } else { // deny the request, show an error }
使用 Enforcer API
它提供了一个非常丰富的 API,以促进对策略的各种操作
获取所有角色
Enforcer::getAllRoles(); // ['writer', 'reader']
获取策略中的所有授权规则。
Enforcer::getPolicy();
获取用户拥有的角色。
Enforcer::getRolesForUser('eve'); // ['writer']
获取具有角色的用户。
Enforcer::getUsersForRole('writer'); // ['eve']
确定用户是否具有角色。
Enforcer::hasRoleForUser('eve', 'writer'); // true or false
为用户添加角色。
Enforcer::addRoleForUser('eve', 'writer');
为用户或角色添加权限。
// to user Enforcer::addPermissionForUser('eve', 'articles', 'read'); // to role Enforcer::addPermissionForUser('writer', 'articles','edit');
为用户删除角色。
Enforcer::deleteRoleForUser('eve', 'writer');
为用户删除所有角色。
Enforcer::deleteRolesForUser('eve');
删除角色。
Enforcer::deleteRole('writer');
删除权限。
Enforcer::deletePermission('articles', 'read'); // returns false if the permission does not exist (aka not affected).
删除用户或角色的权限。
Enforcer::deletePermissionForUser('eve', 'articles', 'read');
删除用户或角色的权限。
// to user Enforcer::deletePermissionsForUser('eve'); // to role Enforcer::deletePermissionsForUser('writer');
获取用户或角色的权限。
Enforcer::getPermissionsForUser('eve'); // return array
确定用户是否具有权限。
Enforcer::hasPermissionForUser('eve', 'articles', 'read'); // true or false
有关更多 API,请参阅 Casbin API。
贡献
您可以通过以下三种方式之一进行贡献
- 使用 [问题跟踪器](https://github.com/php-casbin/hyperf-permission/issues) 报告错误。
- 在 [问题跟踪器](https://github.com/php-casbin/hyperf-permission/issues) 上回答问题或修复错误。
- 贡献新功能或更新 wiki。
代码贡献过程并不是非常正式。您只需确保遵循 PSR-0、PSR-1 和 PSR-2 编码指南。任何新的代码贡献都必须附带相应的单元测试(如果适用)。
许可
Apache-2.0