mathsgod / light-rbac

一个简单轻量级的PHP角色访问控制库。

1.0.3 2024-04-15 03:33 UTC

This package is auto-updated.

Last update: 2024-09-15 04:32:21 UTC


README

Light RBAC 是一个在PHP中实现的简单基于角色的访问控制(RBAC)系统。

类: Rbac

Rbac 类是系统的主类。它管理角色和用户。

属性

  • $roles:一个 RoleManager 实例,管理系统中所有的角色。
  • $users:一个 UserManager 实例,管理系统中所有的用户。

方法

  • addUser(string $name, array $roles = []): User:向系统中添加具有给定名称和角色的用户。如果用户已存在,则将角色添加到现有用户。
  • addRole(string $name):向系统中添加具有给定名称的角色。如果角色已存在,则返回现有角色。
  • getRole(string $name):返回具有给定名称的角色。
  • removeRole(string $name):从系统中删除具有给定名称的角色。
  • getUser(string $name):返回具有给定名称的用户。
  • removeUser(string $name):从系统中删除具有给定名称的用户。
  • getPermissions(): array:返回系统中所有权限。

用法

首先,创建 Rbac 类的实例。然后,使用 addUseraddRole 方法将用户和角色添加到系统中。使用 getRole 方法通过名称检索角色。

$rbac = new \Light\Rbac\Rbac();
$rbac->addRole('admin');
$rbac->addUser('John Doe', ['admin']);

$admin = $rbac->getRole('admin');

权限

权限可以分配给角色。权限是一个表示特定操作或资源的字符串。例如,post:readpost:writepost:delete 等。

$role = $rbac->addRole('admin');
$role->addPermission('post:read');
$role->addPermission('post:write');

检查权限

要检查用户是否有特定权限,请使用 User 类的 can 方法。

$user = $rbac->addUser('John Doe', ['admin']);
if ($user->can('post:read')) {
    echo 'John Doe can read posts.';
}

通配符权限

您可以使用通配符 * 来表示所有权限。

$role = $rbac->addRole('admin');
$role->addPermission('*');

if ($role->can('post:read')) {
    echo 'Admin can read posts.';
}

您还可以使用通配符 'resource:*' 来表示特定资源的所有权限。

$role = $rbac->addRole('admin');
$role->addPermission('post:*');

if ($role->can('post:read')) {
    echo 'Admin can read posts.';
}

检查角色

要检查用户是否有特定角色,请使用 User 类的 hasRole 方法。

$user = $rbac->addUser('John Doe', ['admin']);
if ($user->hasRole('admin')) {
    echo 'John Doe is an admin.';
}

分层角色

$admin = $rbac->addRole('admin');
$admin->addChild('editor');

$rbac->getRole('editor')->addPermission('post:read');

if($admin->can('post:read')) {
    echo 'Admin can read posts.';
}