linkorb / spicedb-php
SpiceDB 的 PHP 连接器
v1.2.0
2023-08-14 13:22 UTC
Requires
- php: >=7.4
- symfony/http-client: ^5.4|^6.0
- symfony/property-access: ^5.4|^6.0
- symfony/serializer: ^5.4|^6.0
Requires (Dev)
- phpunit/phpunit: ^9.5
README
此存储库包含 Authzed 和 SpiceDB 的 PHP 客户端库。
SpiceDB 是一个用于管理安全关键权限检查的数据库系统。
SpiceDB 作为集中式服务存储授权数据。一旦存储,数据可以高效查询以回答诸如“此用户是否有权访问此资源?”和“此用户有权访问的所有资源是什么?”等问题。
Authzed 运行 SpiceDB 的全球可用、无服务器数据库平台。
支持的客户端 API 版本
您可以在 Authzed 文档 API 参考 或 Authzed API Buf 注册存储库 中找到有关 API 的更多信息。
入门指南
我们强烈建议您遵循 保护您的第一个应用 指南,以了解将应用程序与 Authzed 集成的最新最佳实践。
基本用法
安装
使用 composer 工具运行
composer require linkorb/spicedb-php
初始化客户端
SpiceDB 连接器依赖于 symfony/serializer
和 symfony/http-client
。以下是如何使用纯 PHP 实例化新客户端的方法:
use Symfony\Component\HttpClient\HttpClient; use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; use Symfony\Component\Serializer\Encoder\JsonEncoder; use LinkORB\Authzed\Serializer\JsonLinesDecoder; use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer; use Symfony\Component\Serializer\Normalizer\UnwrappingDenormalizer; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; use Symfony\Component\Serializer\Serializer; new SpiceDB( new Serializer( [new ArrayDenormalizer(), new UnwrappingDenormalizer(), new ObjectNormalizer(null, null, null, new ReflectionExtractor())], [new JsonEncoder(), new JsonLinesDecoder()] ), HttpClient::create(), getenv('SPICEDB_HOST'), getenv('SPICEDB_API_KEY') );
对于 Symfony 应用,将有一个独立的包,目前处于 WIP 状态
执行 API 调用
SpiceDB 连接器通过 REST API 实现通信。请参阅 LinkORB\Authzed\ConnectorInterface
了解可用的方法。以下是一个写入模式请求的示例
$client->writeSchema(new \LinkORB\Authzed\Dto\Request\Schema( 'definition blog/post { relation reader: blog/user relation writer: blog/user permission read = reader + writer permission write = writer } definition blog/user {}' ));
测试
可以使用以下命令运行测试
make run-test
为此,您需要在计算机上安装 Docker。或者,您也可以在主机上安装 PHP 来运行测试。
phpunit -c ./phpunit.xml --testsuite 'Integration' ./tests/