<?php
declare(strict_types=1);
namespace App\Form\EventListener\Admin\Webhook;
use App\Entity\Admin\Webhook;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
class GenerateHMACFieldsSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [FormEvents::PRE_SET_DATA => 'preSetData'];
}
public function preSetData(FormEvent $event): void
{
/** @var Webhook $webhook */
$webhook = $event->getData();
// Generate Random HMAC Key for each entry
if (null === $webhook->getId()) {
$webhook->setHmacKey(sha1(time() . random_int(0, getrandmax())));
}
}
}