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
)userId
objectType
objectId
示例
# 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" }