donjan-deng / hyperf-casbin
An authorization library that supports access control models like ACL, RBAC, ABAC in hyperf.
Installs: 16 129
Dependents: 0
Suggesters: 0
Security: 0
Stars: 88
Watchers: 4
Forks: 21
Open Issues: 6
Requires
- php: >=8.1
- ext-bcmath: *
- ext-json: *
- ext-pdo: *
- ext-redis: *
- ext-swoole: >=5.0
- casbin/casbin: ~3.21
- casbin/psr3-bridge: ~1.3
- hyperf/cache: ~3.1
- hyperf/command: ~3.1
- hyperf/config: ~3.1
- hyperf/database: ~3.1
- hyperf/db-connection: ~3.1
- hyperf/logger: ~3.1
- hyperf/process: ~3.1
- hyperf/redis: ~3.1
- hyperf/support: ^3.1
Requires (Dev)
- hyperf/testing: ~3.1
- mockery/mockery: ^1.0
README
Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。本项目做了Hyperf适配并自带了一个RBAC模型,使用本项目前你需要先学会如何使用Casbin。
简单使用
Casbin只负责访问控制,在RBAC方案中也只是储存用户和角色之间的映射关系,身份认证、管理用户列表或角色列表应由项目自身来管理。这里有个简单的示例:example
版本定义
本项目主版本与Casbin主版本相同,子版本和修订版本为项目独有
重大变更
-
3.23适配Hyperf 3.1
-
3.22适配Hyperf 3.0
-
3.21增加Redis Watcher 升级需要重新发布配置
-
3.6 升级需要重新发布配置
安装
composer require donjan-deng/hyperf-casbin
发布配置
php bin/hyperf.php vendor:publish donjan-deng/hyperf-casbin
配置文件config/autoload/casbin.php
API
use Donjan\Casbin\Enforcer; 为用户添加权限 Enforcer::addPermissionForUser('user1', '/user', 'read'); 删除一个用户的权限 Enforcer::deletePermissionForUser('user1', '/user', 'read'); 获取用户所有权限 Enforcer::getPermissionsForUser('user1'); 为用户添加角色 Enforcer::addRoleForUser('user1', 'role1'); 为角色添加权限 Enforcer::addPermissionForUser('role1', '/user', 'edit'); 获取所有角色 Enforcer::getAllRoles(); 获取用户所有角色 Enforcer::getRolesForUser('user1'); 根据角色获取用户 Enforcer::getUsersForRole('role1'); 判断用户是否属于一个角色 Enforcer::hasRoleForUser('use1', 'role1'); 删除用户角色 Enforcer::deleteRoleForUser('use1', 'role1'); 删除用户所有角色 Enforcer::deleteRolesForUser('use1'); 删除角色 Enforcer::deleteRole('role1'); 删除权限 Enforcer::deletePermission('/user', 'read'); 删除用户或者角色的所有权限 Enforcer::deletePermissionsForUser('user1'); Enforcer::deletePermissionsForUser('role1'); 检查权限,返回 true or false Enforcer::enforce("user1", "/user", "edit")
更多使用方法详见官方API
官方资源
参考库
License
This project is licensed under the Apache 2.0 license.