<?php
/*
* This file has been created by developers from BitBag.
* Feel free to contact us once you face any issues or want to start
* another great project.
* You can find more information about us on https://bitbag.io and write us
* an email on hello@bitbag.io.
*/
declare(strict_types=1);
namespace BitBag\SyliusB2BPlugin\EventListener;
use BitBag\SyliusB2BPlugin\Entity\ShopUserInterface;
use Sylius\Bundle\UserBundle\Security\UserLoginInterface;
use Sylius\Component\User\Repository\UserRepositoryInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
use Webmozart\Assert\Assert;
final class ActiveUserAccountEventListener
{
private UserRepositoryInterface $userRepository;
private UserLoginInterface $userLogin;
private string $firewallContextName;
public function __construct(
UserRepositoryInterface $userRepository,
UserLoginInterface $userLogin,
string $firewallContextName,
) {
$this->userRepository = $userRepository;
$this->userLogin = $userLogin;
$this->firewallContextName = $firewallContextName;
}
public function onPasswordSet(GenericEvent $event): void
{
$user = $event->getSubject();
Assert::isInstanceOf($user, ShopUserInterface::class);
$user->setEnabled(true);
$user->setEmailVerificationToken(null);
$user->setVerifiedAt(new \DateTime());
$user->setActivationToken(null);
$this->userRepository->add($user);
$this->userLogin->login($user, $this->firewallContextName);
}
}