alchemy / acl-bundle
Symfony ACL 扩展包
0.2.0
2023-06-14 08:44 UTC
Requires
- php: ^7.4|^8.0
- ext-json: *
- doctrine/orm: ^2.6
- ramsey/uuid-doctrine: ^1.5
- symfony/event-dispatcher: ^4.0|^5.4|^6.1
- symfony/framework-bundle: ^4.0|^5.4|^6.1
- symfony/security-bundle: ^4.0|^5.4|^6.1
- symfony/yaml: ^4.4|^5.4|^6.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- phpunit/phpunit: ^10.2.2
README
安装
项目配置
添加您想要扩展ACL的实体
# config/packages/alchemy_acl.yaml alchemy_acl: objects: publication: App\Entity\Publication asset: App\Entity\Asset
然后您必须别名您的UserRepository服务
# config/services.yaml services: Alchemy\AclBundle\Repository\UserRepositoryInterface: '@App\Repository\UserRepository'
为访问令牌添加redis缓存
# config/packages/cache.yaml framework: cache: default_redis_provider: redis://redis pools: accessToken.cache: # You must use this name for auto wiring adapter: cache.adapter.redis
API
定义
-
userType可以是user或group -
userId用户ID或组ID(取决于userType)。如果值为NULL,则ACE允许所有人。 -
objectType取决于应用程序。依赖您定义的对象
alchemy_acl: objects: publication: App\Entity\Publication asset: App\Entity\Asset
在此应用程序中,objectType可以是publication或asset。
objectId如果值为NULL,则ACE应用于此objectType的所有对象。
端点
此扩展包向应用程序公开以下路由
GET /permissions/aces获取访问控制条目(ACE) 可用的查询过滤器userType(user或group)userIdobjectTypeobjectId
示例
# List all ACEs of an object curl {HOST}/permissions/aces?objectType=publication&objectId=pub-42 # List all ACEs of a group curl {HOST}/permissions/aces?userType=group&userId=g-42 # List all ACEs of a user curl {HOST}/permissions/aces?userType=user&userId=u-42 # List all ACEs of a user on an object curl {HOST}/permissions/aces?userType=user&userId=u-42&objectType=publication&objectId=pub-42
PUT /permissions/ace添加或更新访问控制条目(ACE)
您必须提供以下正文
{
"userType": "user",
"userId": "the-user-id",
"objectType": "publication",
"objectId": "the-publication-id",
"mask": 7
}
DELETE /permissions/ace删除访问控制条目(ACE)
{
"userType": "user",
"userId": "the-user-id",
"objectType": "publication",
"objectId": "the-publication-id"
}