src/EventSubscriber/ForgotPasswordEventSubscriber.php line 38
<?phpnamespace App\EventSubscriber;use CoopTilleuls\ForgotPasswordBundle\Event\CreateTokenEvent;use CoopTilleuls\ForgotPasswordBundle\Event\UpdatePasswordEvent;use Doctrine\ORM\EntityManagerInterface;use Symfony\Bridge\Twig\Mime\TemplatedEmail;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException;use Symfony\Component\Mailer\MailerInterface;use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;final class ForgotPasswordEventSubscriber implements EventSubscriberInterface{private $mailer;private $em;private $userPasswordHasher;public function __construct(MailerInterface $mailer, EntityManagerInterface $em, UserPasswordHasherInterface $userPasswordHasher){$this->mailer = $mailer;$this->em = $em;$this->userPasswordHasher = $userPasswordHasher;}public static function getSubscribedEvents(): array{return [// Symfony 4.3 and inferior, use 'coop_tilleuls_forgot_password.create_token' event nameCreateTokenEvent::class => 'onCreateToken',UpdatePasswordEvent::class => 'onUpdatePassword',];}public function onCreateToken(CreateTokenEvent $event): void{$passwordToken = $event->getPasswordToken();$user = $passwordToken->getUser();$locale = 'nl';if ($user->getLocale()) {$locale = $user->getLocale();}switch ($locale) {case 'de':$subject = 'Setzen Sie Ihr Passwort zurück';case 'en':$subject = 'Reset your password';break;default:$subject = 'Reset je wachtwoord';break;}$message = (new TemplatedEmail());$message->sender('noreply@mailgun.vaneckbv.nl');$message->replyTo('info@vaneckbv.nl');$message->from('Van Eck Bedrijfshygiene <info@vaneckbv.nl>');$message->addTo($user->getEmail());$message->subject($subject);$message->htmlTemplate('Email/reset_password_' . (in_array($locale, ['nl','de','en']) ? $locale : 'en') . '.html.twig');$message->context(['user' => $user,'token' => sprintf($passwordToken->getToken()),'locale' => $locale]);try {$this->mailer->send($message);} catch (ServiceUnavailableHttpException $e) {throw new ServiceUnavailableHttpException('sending_email_failed');// dump($e->getMessage());}}public function onUpdatePassword(UpdatePasswordEvent $event): void{$passwordToken = $event->getPasswordToken();$user = $passwordToken->getUser();$user->setPassword($this->userPasswordHasher->hashPassword($user, $event->getPassword()));$user->eraseCredentials();$this->em->persist($user);$this->em->flush();}}