casbin/phalcon-permission

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

dev-master 2020-09-18 02:16 UTC

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