src/Core/EventSubscriber/RegistrationEmailConfirmationSubscriber.php line 73
<?php/*** Copyright (c) 2019 TECLA Consulting Group oü.* All rights reserved.** This unpublished material is proprietary to TECLA Consulting Group oü.* All rights reserved. The methods and* techniques described herein are considered trade secrets* and/or confidential. Reproduction or distribution, in whole* or in part, is forbidden except by express written permission* of TECLA Consulting Group oü.** @author Matúš Sýkorjak <matus@tecla.no>* @copyright 2019 TECLA Consulting Group oü*/namespace App\Core\EventSubscriber;use App\Core\Event\UserRegistrationSuccessEvent;use JetBrains\PhpStorm\ArrayShape;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpFoundation\RequestStack;use Symfony\Component\Mailer\MailerInterface;use Symfony\Component\Mime\Address;use Symfony\Component\Mime\Email;use Symfony\Component\Routing\Generator\UrlGeneratorInterface;use Symfony\Contracts\Translation\TranslatorInterface;use Twig\Environment;class RegistrationEmailConfirmationSubscriber implements EventSubscriberInterface{private UrlGeneratorInterface $router;private RequestStack $requestStack;private MailerInterface $mailer;private Environment $twig;private TranslatorInterface $translator;private int $unverifiedUsersLifetimeDays;private string $appName;public function __construct(UrlGeneratorInterface $router,RequestStack $requestStack,MailerInterface $mailer,Environment $twig,TranslatorInterface $translator,int $unverifiedUsersLifetimeDays,string $appName) {$this->router = $router;$this->requestStack = $requestStack;$this->mailer = $mailer;$this->twig = $twig;$this->translator = $translator;$this->unverifiedUsersLifetimeDays = $unverifiedUsersLifetimeDays;$this->appName = $appName;}#[ArrayShape([UserRegistrationSuccessEvent::class => 'string'])]public static function getSubscribedEvents(): array{return [UserRegistrationSuccessEvent::class => 'onRegistrationSuccess',];}public function onRegistrationSuccess(UserRegistrationSuccessEvent $event): void{$user = $event->getUser();if (null === $user->getConfirmationToken()) {return;}$confirmationUrl = $this->router->generate('app_register_confirm', ['token' => $user->getConfirmationToken()], UrlGeneratorInterface::ABSOLUTE_URL);$templateHtml = $this->twig->load('packages/core/email/email_confirmation.html.twig');$templateTxt = $this->twig->load('packages/core/email/email_confirmation.txt.twig');$message = (new Email())->from(new Address('no-reply@tecla.cloud', $this->appName))->to($user->getEmail())->subject($this->translator->trans('title.confirm_email', [], 'core@messages'))->html($templateHtml->render(['confirmation_url' => $confirmationUrl,'contact' => $user->getContact(),'expiryLimit' => $this->unverifiedUsersLifetimeDays,]))->text($templateTxt->render(['confirmation_url' => $confirmationUrl,'contact' => $user->getContact(),'expiryLimit' => $this->unverifiedUsersLifetimeDays,]));$this->mailer->send($message);$this->requestStack->getSession()->set('app_send_confirmation_email/email', $user->getEmail());$url = $this->router->generate('app.core.http.registration.email_sent');$event->setResponse(new RedirectResponse($url));}}