tozny / e3db
Tozny端到端加密数据库的PHP客户端库。
Requires
- php: >=7.0
- guzzlehttp/guzzle: ^6.3
- paragonie/sodium_compat: ^1.0
- sainsburys/guzzle-oauth2-plugin: ^3.0
Requires (Dev)
- phpunit/phpunit: ^6.2
- satooshi/php-coveralls: ^1.0
- vlucas/phpdotenv: ^2.4
This package is not auto-updated.
Last update: 2024-09-15 01:33:33 UTC
README
简介
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。