death_satan / hyperf-casbin
An authorization library that supports access control models like ACL, RBAC, ABAC in hyperf.
Fund package maintenance!
Open Collective
hyperf.wiki/#/zh-cn/donate
Requires
- php: >=8.1
- ext-bcmath: *
- ext-json: *
- ext-pdo: *
- ext-redis: *
- ext-swoole: >=4.5
- casbin/casbin: ^3.20
- 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/utils: ^3.1
Requires (Dev)
- friendsofhyperf/rector: ^0.1.5
- friendsofphp/php-cs-fixer: ^3.46
- hyperf/testing: ^3.1
- mockery/mockery: ^1.0
- phpstan/phpstan: ^1.0
This package is auto-updated.
Last update: 2024-11-07 16:30:45 UTC
README
Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。本项目做了Hyperf适配并自带了一个RBAC模型,使用本项目前你需要先学会如何使用Casbin。
简单使用
Casbin只负责访问控制,在RBAC方案中也只是储存用户和角色之间的映射关系,身份认证、管理用户列表或角色列表应由项目自身来管理。这里有个简单的示例:example
版本定义
本项目主版本与Casbin主版本相同,子版本和修订版本为项目独有
重大变更
-
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.