Compare commits

...

3 Commits

Author SHA1 Message Date
osaajani 8843df9f46 simplify webhook signature 2021-01-30 11:24:14 +01:00
osaajani 1c0ffc246a fix missing , 2021-01-30 11:16:15 +01:00
osaajani b5035101b0 update webhook to add signature 2021-01-30 11:12:30 +01:00
1 changed files with 18 additions and 0 deletions

View File

@ -13,6 +13,8 @@ namespace controllers\internals;
class Webhook extends StandardController class Webhook extends StandardController
{ {
const HMAC_ALGO = 'sha256';
protected $bdd; protected $bdd;
protected $model; protected $model;
@ -105,6 +107,7 @@ class Webhook extends StandardController
public function trigger(int $id_user, string $type, array $sms) public function trigger(int $id_user, string $type, array $sms)
{ {
$internal_setting = new Setting($this->bdd); $internal_setting = new Setting($this->bdd);
$internal_user = new User($this->bdd);
$settings = $internal_setting->gets_for_user($id_user); $settings = $internal_setting->gets_for_user($id_user);
if (!$settings['webhook'] ?? false) if (!$settings['webhook'] ?? false)
@ -112,13 +115,28 @@ class Webhook extends StandardController
return false; return false;
} }
$user = $internal_user->get($id_user);
if (!$user)
{
return false;
}
$webhooks = $this->gets_for_type_and_user($id_user, $type); $webhooks = $this->gets_for_type_and_user($id_user, $type);
foreach ($webhooks as $webhook) foreach ($webhooks as $webhook)
{ {
$timestamp = time();
$webhook_random_id = $timestamp . '-' . bin2hex(openssl_random_pseudo_bytes(16));
//signature is hexa string representing hmac sha256 of webhook_random_id
$webhook_signature = hash_hmac(self::HMAC_ALGO, $webhook_random_id, $user['api_key']);
$message = [ $message = [
'url' => $webhook['url'], 'url' => $webhook['url'],
'data' => [ 'data' => [
'webhook_timestamp' => $timestamp,
'webhook_type' => $webhook['type'], 'webhook_type' => $webhook['type'],
'webhook_random_id' => $webhook_random_id,
'webhook_signature' => $webhook_signature,
'id' => $sms['id'], 'id' => $sms['id'],
'at' => $sms['at'], 'at' => $sms['at'],
'text' => $sms['text'], 'text' => $sms['text'],