From 9818fc3fa3a1f8239faa759a474cd46b6d55a4df Mon Sep 17 00:00:00 2001 From: Nikita Date: Wed, 22 Nov 2023 01:43:29 +0500 Subject: [PATCH] change to immutable --- README.md | 4 ++-- examples/user_context_actions.php | 4 ++-- src/AmoCRM/Client/AmoCRMApiClient.php | 8 +++++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 40e7d3f..a051d6b 100644 --- a/README.md +++ b/README.md @@ -106,11 +106,11 @@ $accessToken = $apiClient->getOAuthClient()->getAccessTokenByCode($_GET['code']) ### Авторизация с правами конкретного пользователя аккаунта Начиная с версии 1.4.0 появилась возможность авторизоваться с правами конкретного пользователя, если токен был выпущен администратором аккаунта. -Для авторизации под пользователем аккаунта - необходимо задать ID пользователя у объекта типа ```\AmoCRM\Client\AmoCRMApiClient```. +Для авторизации под пользователем аккаунта - необходимо задать ID пользователя у объекта типа ```\AmoCRM\Client\AmoCRMApiClient```. Метод вернет новый объект с установленным контекстом. ```php $apiClient = new \AmoCRM\Client\AmoCRMApiClient($clientId, $clientSecret, $redirectUri); -$apiClient->setContextUserId(123); +$apiClientWithContext = $apiClient->withContextUserId(123); ``` diff --git a/examples/user_context_actions.php b/examples/user_context_actions.php index b8cbb7e..40cb6f4 100644 --- a/examples/user_context_actions.php +++ b/examples/user_context_actions.php @@ -23,11 +23,11 @@ function (AccessTokenInterface $accessToken, string $baseDomain) { ); $contextUserId = 123; -$apiClient->setContextUserId($contextUserId); +$apiClientWithContext = $apiClient->withContextUserId($contextUserId); //Получим свойства аккаунта и сравним юезра try { - $account = $apiClient->account()->getCurrent(); + $account = $apiClientWithContext->account()->getCurrent(); echo 'Текущий юзер, тот кого вы передали? - ' . ($account->getCurrentUserId() === $contextUserId ? 'да' : 'нет'); } catch (AmoCRMApiException $e) { diff --git a/src/AmoCRM/Client/AmoCRMApiClient.php b/src/AmoCRM/Client/AmoCRMApiClient.php index bbc3b74..612ccfb 100644 --- a/src/AmoCRM/Client/AmoCRMApiClient.php +++ b/src/AmoCRM/Client/AmoCRMApiClient.php @@ -115,15 +115,17 @@ public function getContextUserId(): ?int /** * Для админских токеном можно задать пользователя аккаунта, в контексте которого будет сделан запрос + * Метод возвращает новый объект апи клиента с установленным контекстом * @param int|null $contextUserId * * @return $this */ - public function setContextUserId(?int $contextUserId): AmoCRMApiClient + public function withContextUserId(?int $contextUserId): AmoCRMApiClient { - $this->contextUserId = $contextUserId; + $apiClient = clone $this; + $apiClient->contextUserId = $contextUserId; - return $this; + return $apiClient; } /**