getsno/relesys-users

为Laravel提供的Relesys用户管理API客户端

v2.0.0 2024-04-25 08:29 UTC

This package is auto-updated.

Last update: 2024-09-25 09:19:48 UTC


README

Latest Version on Packagist Total Downloads Made in Ukraine

此Laravel包提供了一种简单清晰的方式来访问Relesys用户管理API端点、查询数据和更新现有条目。

安装

此版本需要PHP ^8.1并支持Laravel 10。

  1. 使用composer安装此包

    composer require getsno/relesys-api
  2. 获取您的Relesys API访问凭证,方法请参阅他们的文档(要使用用户管理API,您必须有权访问relesys.api.users作用域)。

  3. 添加到您的.env文件中

     RELESYS_CLIENT_ID=""
     RELESYS_CLIENT_SECRET=""

用法

该包支持“用户管理”文档部分中的所有端点(包括排序、过滤和分页)。

包的接口与文档部分非常相似(customFieldsdepartmentsuserGroupsuserscommunication),方法名称与端点名称相同。

示例

use \Relesys;
use \Getsno\Relesys\Api\UserManagement\Entities\User;
use \Getsno\Relesys\Api\UserManagement\Enums\UserStatus;
use \Getsno\Relesys\Api\ApiQueryParams;
use \Getsno\Relesys\Api\UserManagement\Entities\Patches\UserPatch;

// create user
$user = User::fromArray([
    'name'                => 'Anton',
    'primaryDepartmentId' => '0956339c-f3db-4a58-b6b3-d04a56dc85f6',
    'phoneNumber'         => [
        'countryCode' => 47,
        'number'      => '777777',
    ],
    'userGroups'          => [
        [
            'id': 'bfab8670-b3a4-4a6b-bc3a-1d1c7c13a636',
            'dataSource': 'RelesysAPI',
        ],
        [
            'id': 'a213e04f-0860-4449-80a3-5e19771ae57b',
            'dataSource': 'RelesysAPI',
        ]
    ],
]);
$newUser = Relesys::users()->createUser($newUser);

// get user
$user = Relesys::users()->getUser('1cb8e33e-32d6-4353-9b15-93115d96580a');

// change user status
Relesys::users()->changeUserStatus(UserStatus::Disabled);

// get users (with filtering, sorting and pagination)
$queryParams = (new ApiQueryParams)
    ->addFilter('status', UserStatus::Activated->value)
    ->sortBy('name')
    ->limit(10);
$usersBatchResponse = Relesys::users()->getUsers(queryParams: $queryParams, page: 2);

// update user
$userPatch = (new UserPatch())
    ->title('Test title')
    ->birthDate(Carbon::parse('05-02-1991'))
    ->secondaryPhoneNumber(PhoneNumber::fromArray(['countryCode' => 47, 'number' => '777777']));
$user = Relesys::users()->updateUser('1cb8e33e-32d6-4353-9b15-93115d96580a', $userPatch);

// get department
Relesys::departments()->getDepartment('ef6a9dfe-b216-4303-829f-cf2e64bf72a1');

// get user group
Relesys::userGroups()->getUserGroup('f2610cc5-8466-4c9f-aa07-0175290e4f37');

// get custom fields
$customFieldsBatchResponse = Relesys::customFields()->getCustomFields();

您还可以通过检查/tests目录中的包测试来找到更多用法示例。

测试

测试基于testbench包,这意味着测试可以直接运行,Laravel会自动引导。

测试支持两种模式:隔离模式(模拟请求)或使用真实凭证(对API的实时请求)。默认情况下,测试在隔离模式下运行,要使用真实请求:将phpunit.xml.dist复制到phpunit.xml,取消注释包含RELESYS_CLIENT_ID RELESYS_CLIENT_SECRET的行,并设置相应的值。

这里有一个可用的docker配置。我强烈建议使用它来运行测试。

cd docker

docker compose up -d

docker exec -it relesys bash

# (optional) to debug a test with xdebug - there's an alias to activate it
# call the alias again to disable it 
xdebug_cli_toggle

composer test

变更日志

有关最近更改的更多信息,请参阅RELEASES

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件