francerz / access-manager
基于PSR-15的访问管理器处理器。
v0.1.3
2024-05-16 17:18 UTC
Requires
- fig/http-message-util: ^1.0
- psr/http-factory: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- francerz/http: ^0.3 || ^0.4
- phpunit/phpunit: ^9.6
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框架
-
创建一个
UserGrantsProviderInterface
实现来检索当前用户的权限。use Francerz\AccessManager\UserGrantsProviderInterface; class CurrentUserGrantsProvider implements UserGrantsProviderInterface { public function getUserGrants(): string { // Returns the current user grants. return $_SESSION['user_grants']; } }
-
在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 文件。