francerz/access-manager

基于PSR-15的访问管理器处理器。

v0.1.3 2024-05-16 17:18 UTC

This package is auto-updated.

Last update: 2024-09-16 17:57:40 UTC


README

francerz\access-manager 库提供了一个PSR-15中间件类,用于根据授予的权限管理路由的访问控制。

安装

您可以通过Composer安装此库。运行以下命令

composer require francerz/access-manager

用法

使用Slim框架

  1. 创建一个 UserGrantsProviderInterface 实现来检索当前用户的权限。

    use Francerz\AccessManager\UserGrantsProviderInterface;
    
    class CurrentUserGrantsProvider implements UserGrantsProviderInterface
    {
        public function getUserGrants(): string
        {
            // Returns the current user grants.
            return $_SESSION['user_grants'];
        }
    }
  2. 在Slim的App路由中配置访问中间件

    use Francerz\AccessManager\AccessMiddleware;
    use Slim\Routing\RouteCollectorProxy;
    
    $app = new \Slim\App();
    
    // A PSR-17 ResponseFactory implemenation
    $responseFactory = new \GuzzleHttp\Psr7\HttpFactory();
    
    $userPermissionProvider = new CurrentUserGrantsProvider();
    $accessMiddleware = new AccessMiddleware($userPermissionProvider, $responseFactory);
    
    $app->get('[/]', [HomeController::class, 'indexGet'])
        ->addMiddleware($accessMiddleware->allow('user'));
    
    $app->group('/admin', function(RouteCollectorProxy $route) {
        // Restricted admin routes.
        $route->get('[/]', [AdminController::class, 'indexGet']);
    })->addMiddleware($accessMiddleware->allow('admin'));

权限语法

allow 方法接受一个类似布尔逻辑的权限字符串。

  • 使用空格分隔单个权限;每个空格都作为 AND 操作符。
  • 使用字符 | 来表示 OR 操作符,例如 'read | write'

许可证

此库采用MIT许可证。有关详细信息,请参阅LICENSE 文件。