krubio/perfect-rbac

RBAC - 基于角色的访问控制

v0.1.2 2023-10-15 17:51 UTC

This package is auto-updated.

Last update: 2024-09-15 20:25:43 UTC


README

codecov

Scrutinizer Code Quality Code Coverage Build Status Code Intelligence Status

Coverage Maintainability Rating Code Smells Technical Debt Quality Gate Status Reliability Rating

Duplicated Lines (%) Vulnerabilities Bugs Security Rating

RBAC授权服务文档

RBAC(基于角色的访问控制)授权服务提供了一种简单有效的方法,在PHP应用程序中实现基于角色的访问控制。本文档将指导您如何使用RBAC类及其方法进行用户角色授权和权限检查。

先决条件

在使用RBAC授权服务之前,请确保您有以下条件

  • 系统上已安装PHP
  • 启用PDO扩展(用于数据库连接)
  • 数据库中已包含所需表(user_roles、roles、role_permissions和permissions),并已填充相关数据

类概述

RBAC授权服务包括以下类

  • AuthorizationService:提供方法以检查用户角色是否基于一组允许的角色授权。
  • PermissionsRepository:处理从数据库检索用户角色的权限。
  • UserRolesRepository:处理从数据库检索用户角色。

入门

要开始使用RBAC授权服务,请按照以下步骤操作

  1. 在PHP文件中包含必要的RBAC类
use PerfectApp\RBAC\AuthorizationService;
use PerfectApp\RBAC\PermissionsRepository;
use PerfectApp\RBAC\UserRolesRepository;
  1. 使用适当的数据库连接详情创建PDO类的实例。
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
  1. 创建PermissionsRepositoryUserRolesRepository类的实例,将PDO实例传递给它们的构造函数。
$permissionsRepository = new PermissionsRepository($pdo);
$userRolesRepository = new UserRolesRepository($pdo);
  1. 创建AuthorizationService类的实例,将UserRolesRepository实例传递给其构造函数。
$authorizationService = new AuthorizationService($userRolesRepository);
  1. 现在您可以使用RBAC授权服务在您的应用程序中。

检查用户角色授权

AuthorizationService类提供isUserRoleAuthorized方法,用于检查用户角色是否基于一组允许的角色授权。

/**
 * @param int $userId
 * @param array<mixed> $allowedRoles
 * @return bool
 */
public function isUserRoleAuthorized(int $userId, array $allowedRoles): bool

参数

  • $userId(整数):需要检查其角色的用户的ID。
  • $allowedRoles(数组):允许的角色数组。用户的角色将与这些角色进行比较。

返回值

  • 如果用户的角色与任何允许的角色匹配,则返回true,表示授权。
  • 如果用户的角色不匹配任何允许的角色或发生错误,则返回false

示例用法

$userId = 1;
$allowedRoles = ['admin', 'editor'];

if ($authorizationService->isUserRoleAuthorized($userId, $allowedRoles)) {
    echo "User is authorized.";
} else {
    echo "User is not authorized.";
}

检查用户角色权限

PermissionsRepository类提供userRoleHasPermission方法,用于检查用户角色是否具有特定的权限。

/**
 * @param int $userId
 * @param string $requiredPermission
 * @return bool
 */
public function userRoleHasPermission(int $userId, string $requiredPermission): bool

参数

  • $userId(整数):需要检查其角色权限的用户的ID。
  • $requiredPermission(字符串):所需权限的名称。

返回值

  • `

如果用户的角色具有所需的权限,则返回`true`。

  • 如果用户的角色没有所需的权限或发生错误,则返回`false`。

示例用法

$userId = 1;
$requiredPermission = 'edit_post';

if ($permissionsRepository->userRoleHasPermission($userId, $requiredPermission)) {
    echo "User has the required permission.";
} else {
    echo "User does not have the required permission.";
}

结论

您现在已学会了如何使用RBAC授权服务在PHP应用程序中执行用户角色授权和权限检查。通过遵循提供的说明和示例,您可以将RBAC功能轻松集成到应用程序中,以根据用户角色和权限控制访问。