Commit 7f25700d authored by Sumesh S's avatar Sumesh S

D9 Upgrade: Minor fixes

parent c611c0ea
...@@ -20,18 +20,18 @@ class ZendeskHelper { ...@@ -20,18 +20,18 @@ class ZendeskHelper {
* @return string * @return string
* A signed JWT. * A signed JWT.
*/ */
public function jwtEncode($payload, $key) { public static function jwtEncode($payload, $key) {
$header = [ $header = [
'typ' => 'JWT', 'typ' => 'JWT',
'alg' => 'HS256', 'alg' => 'HS256',
]; ];
$segments = []; $segments = [];
$segments[] = $this->urlSafeB64Encode(json_encode($header)); $segments[] = self::urlSafeB64Encode(json_encode($header));
$segments[] = $this->urlSafeB64Encode(json_encode($payload)); $segments[] = self::urlSafeB64Encode(json_encode($payload));
$signing_input = implode('.', $segments); $signing_input = implode('.', $segments);
$signature = hash_hmac('sha256', $signing_input, $key, TRUE); $signature = hash_hmac('sha256', $signing_input, $key, TRUE);
$segments[] = $this->urlSafeB64Encode($signature); $segments[] = self::urlSafeB64Encode($signature);
return implode('.', $segments); return implode('.', $segments);
...@@ -51,7 +51,7 @@ class ZendeskHelper { ...@@ -51,7 +51,7 @@ class ZendeskHelper {
* @return string * @return string
* The encoded string. * The encoded string.
*/ */
public function urlSafeB64Encode($data) { public static function urlSafeB64Encode($data) {
$b64 = base64_encode($data); $b64 = base64_encode($data);
return str_replace(['+', '/', '\r', '\n', '='], ['-', '_'], $b64); return str_replace(['+', '/', '\r', '\n', '='], ['-', '_'], $b64);
......
...@@ -138,7 +138,12 @@ class ZendeskUsers { ...@@ -138,7 +138,12 @@ class ZendeskUsers {
*/ */
public function syncUserBack(AccountInterface $account) { public function syncUserBack(AccountInterface $account) {
// Look for the user. // Look for the user.
$result = $this->zendeskClient->users()->search($account->getEmail()); $result = $this->zendeskClient->users()->search(['query' => $account->getEmail()]);
if (empty($result->users)) {
$result = $this->zendeskClient->users()->search(['query' => $account->getDisplayName()]);
}
if (isset($result->users[0]->id)) { if (isset($result->users[0]->id)) {
$this->database->insert('zendesk_users') $this->database->insert('zendesk_users')
->fields([ ->fields([
...@@ -158,14 +163,25 @@ class ZendeskUsers { ...@@ -158,14 +163,25 @@ class ZendeskUsers {
* Updates the user data on zendesk. * Updates the user data on zendesk.
*/ */
public function updateUser(AccountInterface $account) { public function updateUser(AccountInterface $account) {
if ($this->config->get('zendesk_api_sync_users') && $this->hasAccess($account)) { if ($this->config->get('zendesk_api_sync_users') && $this->hasAccess($account)) {
if ($user_id = $this->getZendeskUserId($account->id())) { if ($user_id = $this->getZendeskUserId($account->id())) {
$data = [ $data = [
'id' => $user_id, 'id' => $user_id,
'name' => $account->getDisplayName(), 'name' => $account->getDisplayName(),
'email' => $account->getEmail(), 'email' => $account->getEmail(),
'role' => 'end-user', ];
// Invoke a alter call to allow other modules to pass data to ZenDesk.
$this->moduleHandler->alter(['zendesk_user', 'zendesk_user_update'], $data, $account);
// Make the call.
$this->zendeskClient->users()->update($user_id, $data);
}
elseif ($user_id = $this->syncUserBack($account)) {
$data = [
'id' => $user_id,
'name' => $account->getDisplayName(),
'email' => $account->getEmail(),
]; ];
// Invoke a alter call to allow other modules to pass data to ZenDesk. // Invoke a alter call to allow other modules to pass data to ZenDesk.
......
services: services:
zendesk_user.manager: zendesk_user.manager:
class: \Drupal\zendesk_users\ZendeskUser class: \Drupal\zendesk_users\ZendeskUsers
arguments: ['@database', '@module_handler','@config.factory', '@logger.channel.zendesk'] arguments: ['@database', '@module_handler','@config.factory', '@logger.channel.zendesk']
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment