mathsgod / light-rbac
一个简单轻量级的PHP角色访问控制库。
1.0.3
2024-04-15 03:33 UTC
Requires
- php: >=8.0
Requires (Dev)
- phpunit/phpunit: ^9.6
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 类的实例。然后,使用 addUser 和 addRole 方法将用户和角色添加到系统中。使用 getRole 方法通过名称检索角色。
$rbac = new \Light\Rbac\Rbac(); $rbac->addRole('admin'); $rbac->addUser('John Doe', ['admin']); $admin = $rbac->getRole('admin');
权限
权限可以分配给角色。权限是一个表示特定操作或资源的字符串。例如,post:read、post:write、post: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.'; }