casbin/hyperf-permission

Hyperf 中支持访问控制模型如 ACL、RBAC、ABAC 的授权库。

v1.0.0 2023-08-28 11:00 UTC

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

贡献

您可以通过以下三种方式之一进行贡献

  1. 使用 [问题跟踪器](https://github.com/php-casbin/hyperf-permission/issues) 报告错误。
  2. 在 [问题跟踪器](https://github.com/php-casbin/hyperf-permission/issues) 上回答问题或修复错误。
  3. 贡献新功能或更新 wiki。

代码贡献过程并不是非常正式。您只需确保遵循 PSR-0、PSR-1 和 PSR-2 编码指南。任何新的代码贡献都必须附带相应的单元测试(如果适用)。

许可

Apache-2.0