alsbury / chiphpotle-rest
用于与 SpiceDB REST API 交互的库
v0.7.1
2024-05-09 18:38 UTC
Requires
- php: ^8.1
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- guzzlehttp/guzzle: ^7.4
- guzzlehttp/psr7: ^1.7 || ^2.0
- jane-php/open-api-runtime: ^7.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.34
- jane-php/open-api-2: ^7.3
- phpunit/phpunit: ^10.0
- rector/rector: ^1.0
- vlucas/phpdotenv: ^5.5
README
SpiceDB 的 PHP REST API 客户端
SpiceDB 是一个用于创建和管理安全关键型应用程序权限的数据库。Chiphpotle 是它们 REST API 的 PHP 客户端。更多信息,请访问 https://github.com/authzed/api。
要求
支持 PHP 8.1 及以上版本,并支持 SpiceDB 1.30 及以上版本。
使用 Composer 安装
composer require alsbury/chiphpotle-rest
入门指南
初始化客户端
<?php require_once(__DIR__ . '/vendor/autoload.php'); $apiClient = Client::create('http://spicedb:8443/', 'mysecret'); $request = new CheckPermissionRequest( SubjectReference::create('user', 'bob'), 'view', ObjectReference::create('document', 'topsecret1'), ); try { $response = $apiClient->checkPermission($request); if ($response->getPermissionship() == Permissionship::HAS_PERMISSION) { echo 'You may Pass!' } } catch (Exception $e) { echo 'Exception when calling PermissionsServiceApi->permissionsServiceCheckPermission: ', $e->getMessage(), PHP_EOL; }
实验性 API
客户端中包含三个实验性 API。虽然 SpiceDB 在 1.25 和更早版本中宣布了这些 API,但它们在 http 网关中无法工作。这已在版本 1.26 及以上版本中得到修复。在 SpiceDB 1.30 中,批量权限检查已毕业,实验性 API 已弃用。
测试
将 .env.dist 复制到 .env 并调整 BASE_URL 和 API_KEY。Spicedb 必须在指定的 URL 上运行,我们建议使用 serve-testing 模式运行。
要运行测试,请开始使用
composer install spicedb serve-testing --http-enabled vendor/bin/phpunit
代码生成
此客户端是通过使用 jane-openapi 从 spicedb 提供的 open-api json 架构生成的客户端开始的。
一旦 SpiceDB 运行,您可以通过运行以下命令来重新生成所有类和客户端,以获取任何新的 spicedb API:
vendor/bin/jane-openapi generate
这将在生成目录中生成客户端,然后可以清理并移动到 src 目录。为了良好地开始,运行 PHP CS Fixer 以更一致的方式格式化内容。
vendor/bin/php-cs-fixer fix