src/EventSubscriber/AcceptTermsOnRegistrationSubscriber.php line 34

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Harmonizely\EventSubscriber;
  4. use FOS\UserBundle\Event\GetResponseUserEvent;
  5. use FOS\UserBundle\FOSUserEvents;
  6. use Harmonizely\Entity\Company\UserTermsAcceptanceEntity;
  7. use Harmonizely\Repository\Company\Contract\IUserTermsAcceptanceRepository;
  8. use Harmonizely\Service\Panel\Terms\Contract\ITermsVersionProvider;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. final class AcceptTermsOnRegistrationSubscriber implements EventSubscriberInterface
  11. {
  12.     private IUserTermsAcceptanceRepository $repository;
  13.     private ITermsVersionProvider $versionProvider;
  14.     public function __construct(
  15.         IUserTermsAcceptanceRepository $repository,
  16.         ITermsVersionProvider $versionProvider
  17.     ) {
  18.         $this->repository $repository;
  19.         $this->versionProvider $versionProvider;
  20.     }
  21.     public static function getSubscribedEvents(): array
  22.     {
  23.         return [
  24.             FOSUserEvents::REGISTRATION_CONFIRM => 'onRegistrationConfirm',
  25.         ];
  26.     }
  27.     public function onRegistrationConfirm(GetResponseUserEvent $event): void
  28.     {
  29.         $user $event->getUser();
  30.         $ip $event->getRequest()->getClientIp();
  31.         $this->repository->save(new UserTermsAcceptanceEntity($userUserTermsAcceptanceEntity::TYPE_TERMS$this->versionProvider->getTermsVersion(), $ip));
  32.         $this->repository->save(new UserTermsAcceptanceEntity($userUserTermsAcceptanceEntity::TYPE_PRIVACY$this->versionProvider->getPrivacyVersion(), $ip));
  33.     }
  34. }