ccvf2s / access-manager
用户权限角色的管理助手
1.0.2
2019-02-11 11:00 UTC
Requires
- php: ^7.1
- symfony/config: ^3.4
- symfony/yaml: ^4.1
Requires (Dev)
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2024-09-12 04:19:49 UTC
README
要求
- php >= 7.1
- composer https://getcomposer.org/download/
主要目标
该库的目标是能够简单管理用户的访问级别,基于她/他拥有的权限列表。
如何设置
composer require "ccvf2s/access-manager:^1.0"
如何使用
最好使用依赖注入库,但如果不行,可以自由创建一个新的DefaultDecisionManager
实例。
但在做之前,你需要实现Ccvf2s\AccessManager\Domain\User\UserProvider
接口。这将使库能够根据传递给findUser
的id检索你的用户。
示例
<?php
use Ccvf2s\AccessManager\Application\DefaultDecisionManager;
$filePath = 'security.yml';
$decisionManager = new DefaultDecisionManager(
new YamlPermissionProvider(new YamlParser(), $filePath),
new EmployeeProvider(),// EmployeeProvider implements UserProvider
new DefaultUserAccess()
);
$access = $decisionManager->isGranted('ROLE_USER', 1);
$access
将为允许访问时返回true
,否则返回false
。
yaml文件内容的示例(文件必须遵守这种结构,否则将抛出异常)
ACCESS: ROLES: ROLE_USER: ALLOWED_1 ROLE_MODERATOR: [ROLE_USER, ALLOWED_2] ROLE_ADMIN: [ROLE_MODERATOR, ALLOWED_3] ROLE_SUPER_ADMIN: [ROLE_ADMIN, ALLOWED_4]
覆盖逻辑
如果需要提供自己的逻辑,库提供了一些接口
UserProvider
用于提供用户提供者。PermissionProvider
用于提供你的权限列表。UserAccess
用于提供一些复杂的逻辑来授予用户访问权限。DecisionManager
如果您想覆盖并使用自己的。
异常
您将在Application
目录中找到一些异常。
如何运行测试
composer test
如何贡献
- 分支此仓库
- 提交问题 https://github.com/ccvf2s/access-manager/issues
- 创建PR(拉取请求)并等待审查