clay / clp-php-sdk
PHP SDK 用于消费 Clay CLP API v1.2
此软件包的规范存储库似乎已丢失,因此软件包已被冻结。
1.0.17
2020-05-02 14:17 UTC
Requires
- php: >=7.2.0
- ext-json: *
- illuminate/support: 5.5.* || 5.6.* || 5.7.* || 5.8.* || 6.*
- ixudra/curl: ^6.16
Requires (Dev)
- ext-openssl: *
- phpseclib/phpseclib: ^2.0
- phpunit/phpunit: ^7.5
- symfony/var-dumper: ^4.2
- vlucas/phpdotenv: ^3.3
README
要求
- PHP 7.2 或更高版本
- JSON
- CURL
- OpenSSL
安装
- 使用
composer require clay/clp-php-sdk:1.0.1需要库。
Laravel 服务提供者
- 如果您使用 Laravel 5.5 或更高版本,服务将自动为您注册。
- 如果不这样做,请将
Clay\CLP\Providers\CLPServiceProfider::class添加到您的app.php中的提供者列表。
基本用法
- 此软件包将为您提供三个客户端
CLPClient:这是您可以使用来与 硬件 API 交互的客户端。IdentityServerClient:这是您可以使用来 生成访问令牌 的客户端。VaultClient:这是您可以使用来为 移动密钥 生成签署证书的客户端。
- 客户端需要您注入一个 配置存储库 依赖项。
- 如果您使用 Laravel,这将在服务提供者上自动完成,因此您只需请求这些客户端中的任何一个实例即可,它们将已经为您配置好了。
- 如果您不使用 Laravel,您必须提供一个实现了
Illuminate\Contracts\Config\Repository接口的实例。如果您使用环境变量或 DotEnv 文件,提供了一个实现此接口的DotEnvConfigLoader类,因此您可以直接从您的.env或环境变量中加载变量。- 您可以在
tests/文件夹中找到一个示例.env文件。文件必须具有相同的变量,并且名称相同,才能正确加载。
- 您可以在
示例
使用提供的客户端和 .env
<?php
require("vendor/autoload.php");
// Create the Config repository via .env file.
$config = new DotEnvConfigLoader(Dotenv::create(__DIR__));
// Creates the identity server client.
$identityServer = new IdentityServerClient($config);
// Creates the CLP client.
$client = new CLPClient($config);
// Configures the CLP client to use the Identity Server as auth provider.
$client->setAuthorizationHeaderProvider(function () use ($identityServer) {
return $identityServer->provideAccessToken()->generateAuthorizationHeader();
});
// Example: gets a list of accessors from the API.
// This will return a Collection object with the list of Accessor structs.
$accessors = $client->accessors()->getAccessors()->items();
// Example: create a new accessor.
// This will return an Accessor object upon succesfully registering the new accessor.
$newAccessor = new NewAccessor();
$accessor = $client->accessors()->createAccessor($newAccessor);
提供的 API
AccessGroupAPI:允许您管理访问组;实现了/access_group命名空间内的端点。AccessorAPI:允许您管理访问者(最终用户),以及他们的设备和密钥;实现了/accessor命名空间内的端点。CollectionAPI:允许您管理硬件集合;实现了/collections命名空间内的端点。IQAPI:允许您管理 IQ;实现了/iqs命名空间内的端点。LockAPI:允许您管理锁;实现了/lock命名空间内的端点。TagAPI:允许您管理标签;实现了/tag端点内的端点。EntriesAPI:允许您获取日志条目(门开/关、锁等);实现了/entries端点内的端点。IncidentsAPI:允许您获取锁中的事件(门未关、iq 断开连接等);实现了/incidents端点内的端点。
尚未实现的命名空间
AccessorSettings(/collections/{collection_id}/accessor_settings)CollectionSettings(/accessors/{accessor_id}/collection_settings)Updates(/updates)
使用说明(待办事项)
- 生成和使用令牌
- 注册 IQ
- 将锁附加到 IQ
- 注册访问者和标签 (待办事项)
- 注册移动密钥 (待办)
- 使用锁的时间表 (待办)
- 自定义访问者组和访问组的安全规则 (待办)
- 使用标签注册模式 (待办)
- 在锁上设置离线访问 (待办)
术语表
- IQ: 控制锁的访问的互联网连接设备。
- 锁: 任何由Clay供电的电子锁。它们连接到单个IQ。
- 中继器: 重复IQ信号的设备。锁可以连接到中继器而不是IQ。
- 访问者: 可以访问零个或多个锁的最终用户。访问者将拥有钥匙,这些钥匙可能是标签(常规标签)或设备(移动密钥)。
- 访问者组: 一组访问者,用于确定锁中的访问规则。
- 集合: 硬件设备组(IQ、锁和中继器)。
- 钥匙: 访问者的识别方法。钥匙可以是标签或设备(移动密钥)。
- 标签: 使访问者能够访问锁的物理标签。它们可以是未注册的,或者注册到单个访问者。
- 时间表: 一个允许在哪些星期几和什么时间访问的日程表。
- IQ硬件: 连接到IQ的所有硬件。
- IQ硬件树: 连接到IQ的硬件设备树。它看起来像一棵树,因为锁可以连接到IQ或中继器,而中继器可以连接到IQ。
- 访问者设备: 注册到访问者以用作移动密钥的移动设备。
- IQ注册: 通过其激活码将全新的IQ注册到API的过程。在此过程之后,IQ将获得一个ID,并且可以将其硬件连接到它。
- 标签注册模式: 锁具有的一种模式,用于将全新的标签分配到系统中。当标签未预先注册时,它们不会被API识别,也不能分配给访问者。将锁设置为标签注册模式,您可以触摸锁上的新标签,这些标签将注册到系统中。
- 离线模式/离线访问: 当锁与其IQ/中继器之间存在通信问题(断电、射频干扰等)时,锁进入离线模式。在离线模式下,它们将求助于允许访问的预设标签/移动密钥的内部列表。在离线模式下,只有注册了特定锁的离线访问的钥匙(标签和移动密钥)可以访问它。离线模式不支持时间表,并且不能直接分配给访问者,只能分配给钥匙(标签和移动密钥)。
- 条目: 与锁中的访问控制相关的事件,例如访问批准、访问拒绝等。
- 事件: 与意外问题相关的事件,例如IQ连接/断开连接、门未关闭等。