* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\PrestashopCheckout\Webhook; use PrestaShop\Module\PrestashopCheckout\Configuration\PrestaShopConfiguration; use PrestaShop\Module\PrestashopCheckout\Exception\PsCheckoutException; class WebhookSecretTokenService { const PS_CHECKOUT_WEBHOOK_SECRET = 'PS_CHECKOUT_WEBHOOK_SECRET'; /** * @var PrestaShopConfiguration */ private $prestaShopConfiguration; public function __construct(PrestaShopConfiguration $prestaShopConfiguration) { $this->prestaShopConfiguration = $prestaShopConfiguration; } /** * @param string $secret * * @return bool * * @throws PsCheckoutException */ public function upsertSecretToken($secret) { if (empty($secret)) { throw new WebhookException('Webhook secret is empty', WebhookException::WEBHOOK_PAYLOAD_UNSUPPORTED); } $this->prestaShopConfiguration->set(self::PS_CHECKOUT_WEBHOOK_SECRET, $secret); return true; } /** * @param string $secret * * @return bool */ public function validateSecretToken($secret) { $storedSecret = $this->prestaShopConfiguration->get(self::PS_CHECKOUT_WEBHOOK_SECRET); return $secret === $storedSecret; } }