<?php
namespace App\EventSubscriber;
use App\Event\MemberRegisteredEvent;
use App\Events;
use App\Security\EmailVerifier;
use Fbeen\SettingsBundle\Service\SettingsHelper;
use Fbeen\SettingsBundle\Service\SettingsInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Mailer\Mailer;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Address;
class EmailMessengerSubscriber implements EventSubscriberInterface
{
public function __construct(
private MailerInterface $mailer,
private SettingsInterface $settings,
private EmailVerifier $emailVerifier,
private string $toEmail,
private string $fromEmail)
{
$this->emailVerifier = $emailVerifier;
}
public function onMemberRegistered(MemberRegisteredEvent $event): void
{
$user = $event->getUser();
// generate a signed url and email it to the user
$this->emailVerifier->sendEmailConfirmation('app.verify_registration', $user,
(new TemplatedEmail())
->from(new Address($this->fromEmail, $this->settings->getSetting('app_name')))
->to($user->getEmail())
->subject('Please Confirm your Email')
->htmlTemplate('registration/confirmation_email.html.twig')
->context([
//'expiration_date' => new \DateTime('+7 days'),
'user' => $user,
'username' => $user->getUsername(),
])
);
}
public static function getSubscribedEvents(): array
{
return [
Events::MEMBER_REGISTERED => 'onMemberRegistered',
];
}
}