locomotivemtl / charcoal-user
用户定义、认证和授权。
Requires
- php: >7.1
- laminas/laminas-permissions-acl: ^2.7
- locomotivemtl/charcoal-config: ~0.10
- locomotivemtl/charcoal-core: ~0.4
- locomotivemtl/charcoal-factory: ~0.4
- locomotivemtl/charcoal-object: ~0.7
- locomotivemtl/charcoal-translator: ~0.3
- psr/log: ^1.0
Requires (Dev)
- cache/void-adapter: ^1.0
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^7.5
- seld/jsonlint: ^1.7
- squizlabs/php_codesniffer: ^3.3
- tedivm/stash: ~0.14
- dev-master / 0.7.x-dev
- 0.7.0.2
- 0.7.0.1
- 0.7.0
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0.3
- 0.6.0.2
- 0.6.0.1
- 0.6.0
- 0.5.2
- 0.5.1.1
- 0.5.1
- 0.5.0
- 0.4.1.1
- 0.4.1
- 0.4.0.2
- 0.4.0.1
- 0.4
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.2
- 0.2.1
- 0.2
- 0.1.6
- 0.1.5.1
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1
- dev-feature/camelizePropertiesAndUseArrayAccess
- dev-acl-manager-refactor
- dev-mducharme-camelcase
- dev-mducharme-jwt
This package is auto-updated.
Last update: 2024-09-07 01:53:24 UTC
README
用户定义(作为Charcoal模型),认证和授权(使用Laminas ACL)。
目录
如何安装
安装 charcoal-user 的首选(也是唯一支持的方式)是使用 composer
★ composer require locomotivemtl/charcoal-user
依赖关系
- PHP 7.1+
laminas/laminas-permissions-acl
locomotivemtl/charcoal-object
用户对象
该模块的核心是“用户”对象的定义。该接口可以在 \Charcoal\User\UserInterface
中找到。此接口扩展了 \Charcoal\Object\ContentInterface
(来自 locomotivemtl/charcoal-object
),它又扩展了 \Charcoal\Model\ModelInterface
(来自 locomotivemtl/charcoal-core
)。
使用此模块的首选方式是在项目中定义自己的用户类,并扩展提供的 \Charcoal\User\AbstractUser
类。
对于快速原型或小型项目,提供了一个完整的具体类 \Charcoal\User\GenericUser
。
用户属性
请注意,用户的
key
是username
。因此,id()
返回用户名。它必须是唯一的。
从 Content-Interface
继承的属性
认证
...
认证示例
...
授权
用户授权是通过基于角色的 访问控制列表(ACL)管理的。内部,它使用 laminas/laminas-permissions-acl
进行 ACL 逻辑。建议阅读 Laminas ACL 文档 了解更多关于它的工作方式。
必须管理两个主要概念,无论是从 JSON 配置文件还是数据库中(与 locomotivemtl/charcoal-admin
一起工作得很好),即 角色 和 权限。
ACL 配置
设置 ACL 时,强烈建议使用 \Charcoal\User\Acl\Manager
。
ACL 示例
{ "acl": { "permissions": { "superuser": { "superuser": true }, "author": { "allowed": {}, "denied": {} } } } }
use Laminas\Permissions\Acl\Acl; use Laminas\Permissions\Acl\Resource\GenericResource as AclResource; // Dependencies from `charcoal-user` use Charcoal\User\Acl\Manager as AclManager; $acl = new Acl(); // Add resource for ACL $acl->addResource(new AclResource($resourceName)); $aclManager = new AclManager([ 'logger' => $logger, ]); $aclManager->loadPermissions($acl, $config['acl.permissions'], $resourceName); $authorizer = new Authorizer([ 'logger' => $logger, 'acl' => $acl, 'resource' => $resourceName, ]); $isAllowed = $authorizer->userAllowed($user, [ 'permssion' ]);
开发
安装开发环境
★ composer install --prefer-source
运行脚本(phplint、phpcs 和 phpunit)
★ composer test
API 文档
- 自动生成的
phpDocumentor
API 文档可在 https://locomotivemtl.github.io/charcoal-user/docs/master/ 找到 - 自动生成的
apigen
API 文档可在 https://codedoc.pub/locomotivemtl/charcoal-user/master/ 找到
开发依赖
phpunit/phpunit
squizlabs/php_codesniffer
satooshi/php-coveralls
持续集成
编码风格
charcoal-user 模块遵循 Charcoal 编码风格
- PSR-1
- PSR-2
- PSR-4,因此自动加载由 Composer 提供。
- phpDocumentor 注释。
- 请阅读 phpcs.xml 文件以获取有关代码风格的详细信息。
可以使用
composer phpcs
执行代码风格验证/强制执行。还提供了一个自动修复程序,使用composer phpcbf
。
在运行
phpstan analyse -l7 src/
时,此模块不应抛出任何错误 👍。
作者
- Mathieu Ducharme, mat@locomotive.ca
- Chauncey McAskill
- Locomotive,蒙特利尔的一家网络代理商
许可证
Charcoal遵循MIT许可证。详细信息请参阅LICENSE。