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

D9 Upgrade: Minor fixes

parent c611c0ea
......@@ -20,18 +20,18 @@ class ZendeskHelper {
* @return string
* A signed JWT.
*/
public function jwtEncode($payload, $key) {
public static function jwtEncode($payload, $key) {
$header = [
'typ' => 'JWT',
'alg' => 'HS256',
];
$segments = [];
$segments[] = $this->urlSafeB64Encode(json_encode($header));
$segments[] = $this->urlSafeB64Encode(json_encode($payload));
$segments[] = self::urlSafeB64Encode(json_encode($header));
$segments[] = self::urlSafeB64Encode(json_encode($payload));
$signing_input = implode('.', $segments);
$signature = hash_hmac('sha256', $signing_input, $key, TRUE);
$segments[] = $this->urlSafeB64Encode($signature);
$segments[] = self::urlSafeB64Encode($signature);
return implode('.', $segments);
......@@ -51,7 +51,7 @@ class ZendeskHelper {
* @return string
* The encoded string.
*/
public function urlSafeB64Encode($data) {
public static function urlSafeB64Encode($data) {
$b64 = base64_encode($data);
return str_replace(['+', '/', '\r', '\n', '='], ['-', '_'], $b64);
......
......@@ -138,7 +138,12 @@ class ZendeskUsers {
*/
public function syncUserBack(AccountInterface $account) {
// 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)) {
$this->database->insert('zendesk_users')
->fields([
......@@ -158,14 +163,25 @@ class ZendeskUsers {
* Updates the user data on zendesk.
*/
public function updateUser(AccountInterface $account) {
if ($this->config->get('zendesk_api_sync_users') && $this->hasAccess($account)) {
if ($user_id = $this->getZendeskUserId($account->id())) {
$data = [
'id' => $user_id,
'name' => $account->getDisplayName(),
'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.
......
services:
zendesk_user.manager:
class: \Drupal\zendesk_users\ZendeskUser
class: \Drupal\zendesk_users\ZendeskUsers
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