memcrab / access
memCrab核心API的PHP访问库
1.4.0
2021-09-24 13:05 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: 6.*.*
README
状态
这是一个轻量级的PHP访问权限模块。
特性
- 支持需要通过访问权限控制的服务、动作和角色
- 支持访问组,可以将多个服务和动作组合起来,以便将所有这些访问权限赋予某个角色
- 所有配置都是基于数组的,可以是简单的YAML文件
- 允许您检查任何服务/动作的角色访问权限
- 允许检查动作组的角色访问权限
- 允许您获取当前角色可用的所有组
- 允许通过角色、服务或访问组使用权限矩阵,允许您通过数组键简单地使用isset()检查任何权限。
- 使用更新的pecl yaml-ext 2.0.0通过php 7.0进行高性能yaml解析
- 严格标准编码,使用完整的参数和返回类型(php 7.1)
- PSR-4自动加载兼容结构
- 使用PHPUnit进行单元测试
- 易于在任何框架中使用
安装
composer require memcrab/access
依赖
php扩展YAML
- 对于Ubuntu/Debian
- apt-get update
- apt-get install php-pear
- apt-get install php-dev
- apt-get install php-xml php7.0-xml
- apt-get install libyaml-dev
- pecl channel-update pecl.php.net
- pecl install yaml-2.0.0
- 对于OS X
- brew install php71 --with-pear
- brew install autoconf
- touch $(brew --prefix php71)/lib/php/.lock && chmod 0644 $(brew --prefix php71)/lib/php/.lock
- pecl install yaml-2.0.0
用法
- 初始化Access:
new memCrab\Access()
- 加载规则:
->loadRules(array $rules)
- $rules - 来自yaml文件的规则,例如
- 运行检查:
->checkRights(string $service, string $action, string $userRole)
- $service - 服务(或控制器)的名称
- $action - 动作的名称
- $userRole - 用户角色的名称
YAML配置示例
contentView: roles: [guest, user, admin] services: post: [get] product: [get] index: [get] catalog: [filter] contentManage: roles: [admin] services: post: [add, save, delete] product: [add, save, delete]
运行示例
require_once __DIR__ . "/../vendor/autoload.php"; use memCrab\Exceptions\FileException; use memCrab\File\Yaml; use memCrab\Access\Access; use memCrab\Exception\AccessException; try { $Yaml = new Yaml(); $rules = $Yaml->load("config/rules.yaml", null)->getContent(); $Access = new Access(); $Access->loadRules($rules); if(!$Access->checkRights("post", "save", "admin")) throw AccessException("Access Denie.", 401); // do all your work } catch(AccessException $error){ $Response = new \YourResponseClass(); $Response->setErrorResponse($error); } $Response->sendHeaders(); $Response->sendContent();
MIT许可