tomkyle/rbac

基于角色的访问控制:角色、权限和ACL

1.0.7 2014-03-12 08:32 UTC

This package is auto-updated.

Last update: 2024-09-11 17:31:43 UTC


README

#tomkyle/rbac

基于角色的访问控制解决方案,从我的遗留代码库中提取。它提供了一种 权限角色 系统,以及一个简单的 ACL实现

Scrutinizer Quality Score

##核心概念

###角色

客户端可以关联到某些角色,例如 作者管理员。这些角色存储在包含角色ID的 RolesStorage 对象中。

<?php
use \tomkyle\Roles\RolesStorage;

$roles = new RolesStorage( 1, 2 );
echo $roles->contains( 2 ) ? "YES" : "NO";

###ACL 服务可能被限制为仅允许某些角色访问。 AccessControlList 作为 RolesStorage 的扩展来实现这一点

<?php
use \tomkyle\Roles\RolesStorage;
use \tomkyle\Roles\RolesAwareInterface;
use \tomkyle\AccessControlList\AccessControlList;
use \tomkyle\AccessControlList\AccessControlListAwareInterface;

class MyUser implements RolesAwareInterface {
  use RolesAwareTrait;
}

class MyService implements AccessControlListAwareInterface {
  use AccessControlListAwareTrait;
}

$service = new MyService;
$service->setAccessControlList( new AccessControlList( 1, 2) );

$user = new MyUser;
$user->setRoles( new RolesStorage( 2, 3 ) );

echo $service->isAllowed( $user ) ? "YES" : "NO";

###权限 客户端可能被允许或禁止执行某些操作。 PermissionsStorage 将执行此操作

<?php
use \tomkyle\Permissions\PermissionsAwareInterface;
use \tomkyle\Permissions\PermissionsAwareTrait;
use \tomkyle\Permissions\ApplyPermissionsStorage;

class MyUser implements PermissionsAwareInterface {
  use PermissionsAwareTrait;
}

$user = new MyUser;

// Reads users permissions from database:
new ApplyPermissionsStorage( $user, $pdo );

echo $user->hasPermission( "my_action" ) ? "YES" : "NO";

##安装

此库没有依赖项,除了PDO连接。从命令行或 composer.json 文件中进行安装

#####命令行

composer require tomykle/rbac

#####composer.json

"require": {
    "tomkyle/rbac": "dev-master"
}

#####MySQL 此软件包包含两个MySQL转储文件,install.sql.distinstall.sample-data.sql.dist。只需执行其内容;前者安装表、索引和唯一约束,删除现有表;后者添加示例数据。请参阅表信息或字段注释中的注释。

数据库模式使用InnoDB表来更好地处理事务和关系,尽管目前尚未使用这些功能(因为我还没有使用过它)。

##数据库 角色、权限及其与客户端的关联存储在多个数据库表中

##管理 目前没有可用的管理工具。我以前曾在数据库中手动管理它们。无论如何,唯一 约束将防止您添加重复项。因此,如果您必须删除某个角色或权限,请勿忘记引用其主键的关系表。