tozny/e3db

Tozny端到端加密数据库的PHP客户端库。

1.2.0 2019-02-15 17:05 UTC

This package is not auto-updated.

Last update: 2024-09-15 01:33:33 UTC


README

PHP 7.0+ Build Status Coverage Status Packagist

简介

TozStore(原名E3DB)是一个具有强大共享和同意管理功能的存储平台。有关更多信息,请访问我们的网站。[阅读更多](https://tozny.com/tozstore/)

TozStore提供基于JSON的NoSQL风格的API,用于读取、写入和查询存储在云中的安全数据。

安装

Composer

使用Composer安装,请将以下内容添加到您的composer.json文件中:

"require": {
    "tozny/e3db": "1.2.0"
}

然后运行php composer.phar install

注册客户端

注册一个Tozny账户开始使用。[Tozny](https://dashboard.tozny.com/register)管理员控制台可以创建客户端(并从控制台获取其凭据)或创建注册令牌,使用Tozny\E3DB\Client::register()动态创建客户端。在控制台中注册的客户端将自动将凭据备份到您的账户。通过SDK动态创建的客户端可以可选将凭据备份到您的账户。

有关更完整的操作指南,请参阅[注册示例](https://github.com/tozny/e3db-php/blob/master/examples/registration.php)。

无凭据备份

$token = '...';
$client_name = '...';

list($public_key, $private_key) = \Tozny\E3DB\Client::generate_keypair();
$client_info = \Tozny\E3DB\Client::register($token, $client_name, $public_key);

从服务器返回的对象包含客户端的UUID、API密钥和API密钥(同时返回注册期间传递的公钥)。您负责将此信息本地存储,因为如果没有凭据备份,它将无法恢复

带凭据备份

$token = '...';
$client_name = '...';

list($public_key, $private_key) = \Tozny\E3DB\Client::generate_keypair();
$client_info = \Tozny\E3DB\Client::register($token, $client_name, $public_key, $private_key, true);

在备份凭据时,必须将私有密钥传递给注册处理程序,因为它用于对存储在服务器上的加密备份文件进行加密签名。私有密钥永远不会离开系统,并且存储的凭据只能由新注册的客户端本身或与其注册的账户访问。

加载配置和创建客户端

配置通过在运行时用客户端凭据实例化一个Tozny\E3DB\Config对象来管理。

/**
 * Assuming your credentials are stored as defined constants in the
 * application, pass them each into the configuration constructor as
 * follows:
 */
$config = new \Tozny\E3DB\Config(
  CLIENT_ID,
  API_KEY_ID,
  API_SECRET,
  PUBLIC_KEY,
  PRIVATE_KEY,
  API_URL
);

/**
 * Pass the configuration to the default coonection handler, which
 * uses Guzzle for requests. If you need a different library for
 * requests, subclass `\Tozny\E3DB\Connection` and pass an instance
 * of your custom implementation to the client instead.
 */
$connection = new \Tozny\E3DB\Connection\GuzzleConnection($config);

/**
 * Pass both the configuration and connection handler when building
 * a new client instance.
 */
$client = new \Tozny\E3DB\Client($config, $connection);

用法

写入记录

要将新记录写入数据库,请使用描述要写入的数据类型的字符串调用Tozny\E3DB\Client::write方法,并包含包含记录字段的关联数组。Tozny\E3DB\Client::write返回新创建的记录。

$record = $client->write('contact', [
  'first_name' => 'Jon',
  'last_name'  => 'Snow',
  'phone'      => '555-555-1212',
]);

echo sprintf("Wrote record %s\n", $record->meta->record_id);

查询记录

E3DB支持根据记录元数据中存储的字段进行查询的多种选项。有关可以传递给Tozny\E3DB\Client::query的完整选项集,请参阅API文档。

例如,列出所有类型为contact的记录,并打印包含姓名和电话号码的简单报告

$data = true;
$raw = false;
$writer = null;
$record = null;
$type = 'contact';

$records = $client->query($data, $raw, $writer, $record, $type);
foreach($records as $record) {
  $fullname = $record->data['first_name'] . ' ' . $record->data['last_name'];
  echo sprintf("%-40s %s\n", $fullname, $record->data['phone']);
}

在此示例中,Tozny\E3DB\Client::query方法返回一个包含与查询匹配的每个记录的迭代器。

更多示例

请参阅[简单示例代码](https://github.com/tozny/e3db-php/blob/master/examples/simple.php)以获取可运行的详细示例。

开发

在运行测试之前,通过您的[Tozny账户](https://dashboard.tozny.com/register)创建一个注册令牌。

将注册令牌存储在项目根目录下的.env文件中(有关示例文件布局,请参阅.env.example)。集成测试将使用此令牌动态创建测试客户端。

检出存储库后,使用composer install安装依赖项,然后运行PHPUnit,使用./vendor/bin/phpunit执行所有集成测试。

文档

通用TozStore文档位于我们的开发者网站:https://developers.tozny.com

贡献

欢迎在GitHub上提交bug报告和pull请求,链接为:https://github.com/tozny/e3db-php