src/Component/Organization/EventListener/FinishRegistrationEventListener.php line 31

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\Organization\EventListener;
  4. use BitBag\OpenMarketplace\Component\Customer\Model\CustomerInterface;
  5. use BitBag\OpenMarketplace\Component\Organization\Entity\Organization;
  6. use BitBag\OpenMarketplace\Component\Organization\Manager\RegistrationConflictManagerInterface;
  7. use BitBag\OpenMarketplace\Component\Vendor\Entity\ShopUserInterface;
  8. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  9. use Sylius\Bundle\UserBundle\Security\UserLoginInterface;
  10. use Sylius\Component\User\Repository\UserRepositoryInterface;
  11. use Webmozart\Assert\Assert;
  12. final class FinishRegistrationEventListener
  13. {
  14.     public function __construct(
  15.         private RegistrationConflictManagerInterface $registrationConflictManager,
  16.         private UserRepositoryInterface $userRepository,
  17.         private UserLoginInterface $userLogin,
  18.         private string $firewallContextName,
  19.         ) {
  20.     }
  21.     public function preRegister(ResourceControllerEvent $event): void
  22.     {
  23.         $this->registrationConflictManager->manage($event);
  24.     }
  25.     public function postRegister(ResourceControllerEvent $event): void
  26.     {
  27.         $customer $event->getSubject();
  28.         Assert::isInstanceOf($customerCustomerInterface::class);
  29.         $user $customer->getUser();
  30.         Assert::isInstanceOf($userShopUserInterface::class);
  31.         $user->setEnabled(true);
  32.         $user->setEmailVerificationToken(null);
  33.         $user->setVerifiedAt(new \DateTime());
  34.         $user->addRole(Organization::ROLE_ADMIN);
  35.         $user->setActivationToken(null);
  36.         $this->userRepository->add($user);
  37.         $this->userLogin->login($user$this->firewallContextName);
  38.     }
  39. }