linkorb/spicedb-php

SpiceDB 的 PHP 连接器

v1.2.0 2023-08-14 13:22 UTC

This package is auto-updated.

Last update: 2024-09-14 16:18:58 UTC


README

Docs

此存储库包含 Authzed 和 SpiceDB 的 PHP 客户端库。

SpiceDB 是一个用于管理安全关键权限检查的数据库系统。

SpiceDB 作为集中式服务存储授权数据。一旦存储,数据可以高效查询以回答诸如“此用户是否有权访问此资源?”和“此用户有权访问的所有资源是什么?”等问题。

Authzed 运行 SpiceDB 的全球可用、无服务器数据库平台。

支持的客户端 API 版本

您可以在 Authzed 文档 API 参考Authzed API Buf 注册存储库 中找到有关 API 的更多信息。

入门指南

我们强烈建议您遵循 保护您的第一个应用 指南,以了解将应用程序与 Authzed 集成的最新最佳实践。

基本用法

安装

使用 composer 工具运行

composer require linkorb/spicedb-php

初始化客户端

SpiceDB 连接器依赖于 symfony/serializersymfony/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/