charcoal / user
v5.0.0
2024-03-13 15:05 UTC
Requires
- php: ^7.4 || ^8.0
- charcoal/config: ^5.0
- charcoal/core: ^5.0
- charcoal/factory: ^5.0
- charcoal/object: ^5.0
- charcoal/translator: ^5.0
- laminas/laminas-permissions-acl: ^2.8
- psr/log: ^1.0
Requires (Dev)
- cache/void-adapter: ^1.0
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^9.5
- seld/jsonlint: ^1.9
- squizlabs/php_codesniffer: ^3.5
- tedivm/stash: ~0.16
Replaces
- dev-main / 5.x-dev
- v5.0.0
- v4.1.0
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.2
- v4.0.1
- v4.0.0
- v3.1.8
- v3.1.7
- v3.1.6
- v3.1.5
- v3.1.4
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.2
- 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-13 16:14:27 UTC
README
User包提供了定义用户模型、认证和授权用户的抽象工具,这些功能通过集成Laminas Permissions ACL实现。
安装
composer require charcoal/user
概述
用户对象
本模块的核心是定义一个"用户"对象。该接口可以在\Charcoal\User\UserInterface
中找到。此接口扩展了来自charcoal/object
的\Charcoal\Object\ContentInterface
,而\Charcoal\Object\ContentInterface
扩展了来自charcoal/core
的\Charcoal\Model\ModelInterface
。
使用此模块的首选方式是在项目中定义自己的用户类,并扩展提供的\Charcoal\User\AbstractUser
类。
对于快速原型或小型项目,提供了一个完整的具体类\Charcoal\User\GenericUser
。
用户属性
请注意,用户的
key
是username
。因此,id()
返回用户名。它必须是唯一的。
从Content-Interface
继承的属性
认证
待办事项
授权
用户授权通过基于角色的访问控制列表(ACL)管理。内部,它使用laminas/laminas-permissions-acl
进行ACL逻辑。建议阅读Laminas ACL文档以了解更多信息。
有两个主要概念需要管理,要么从JSON配置文件中,要么在数据库中(与charcoal/admin
配合良好),即角色和权限。
ACL配置
设置ACL时,强烈建议使用\Charcoal\User\Acl\Manager
。
ACL示例
{ "acl": { "permissions": { "superuser": { "superuser": true }, "author": { "allowed": {}, "denied": {} } } } }
use Charcoal\User\Acl\Manager as AclManager; use Laminas\Permissions\Acl\Acl; use Laminas\Permissions\Acl\Resource\GenericResource as AclResource; $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' ]);