casbin / phalcon-permission
Phalcon 中支持访问控制模型如 ACL、RBAC、ABAC 的授权库。
dev-master
2020-09-18 02:16 UTC
Requires
- php: >=7.2
- ext-phalcon: ~4.0.0-beta.2
- casbin/casbin: ^2.3
This package is auto-updated.
Last update: 2024-08-26 15:25:10 UTC
README
Phalcon 中支持访问控制模型如 ACL、RBAC、ABAC 的授权库。
安装
在您的 phalcon 项目的 composer.json
中需要此包。这将下载该包。
$ composer require
配置数据库连接
'database' => [ 'adapter' => 'mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => '', 'dbname' => 'db-name', 'charset' => 'utf8', ],
然后运行 phalcon-permission 迁移来创建所需的表。为此,您需要安装 Phalcon Dev Tools。
使用 Phalcon Dev Tools 迁移迁移,运行命令
$ phalcon migration run --migrations=vendor/casbin/phalcon-permission/migrations
这将创建一个名为 casbin_rules
的新表。
用法
快速入门
use Easyswolle\Permission\Casbin; use Easyswolle\Permission\Config; $config = new Config(); $casbin = new Casbin($config); // 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,以简化对策略的各种操作
获取所有角色
$casbin->getAllRoles(); // ['writer', 'reader']
获取策略中的所有授权规则。
$casbin->getPolicy();
获取用户拥有的角色。
$casbin->getRolesForUser('eve'); // ['writer']
获取具有角色的用户。
$casbin->getUsersForRole('writer'); // ['eve']
确定用户是否有角色。
$casbin->hasRoleForUser('eve', 'writer'); // true or false
为用户添加角色。
$casbin->addRoleForUser('eve', 'writer');
为用户或角色添加权限。
// to user $casbin->addPermissionForUser('eve', 'articles', 'read'); // to role $casbin->addPermissionForUser('writer', 'articles','edit');
为用户删除角色。
$casbin->deleteRoleForUser('eve', 'writer');
删除用户的所有角色。
$casbin->deleteRolesForUser('eve');
删除角色。
$casbin->deleteRole('writer');
删除权限。
$casbin->deletePermission('articles', 'read'); // returns false if the permission does not exist (aka not affected).
删除用户或角色的权限。
$casbin->deletePermissionForUser('eve', 'articles', 'read');
删除用户或角色的权限。
// to user $casbin->deletePermissionsForUser('eve'); // to role $casbin->deletePermissionsForUser('writer');
获取用户或角色的权限。
$casbin->getPermissionsForUser('eve'); // return array
确定用户是否有权限。
$casbin->hasPermissionForUser('eve', 'articles', 'read'); // true or false
更多信息请参阅 Casbin API。