verifyEmailHelper = $helper; $this->mailer = $mailer; $this->entityManager = $manager; } public function sendEmailConfirmation(string $verifyEmailRouteName, UserInterface $user, TemplatedEmail $email): void { $signatureComponents = $this->verifyEmailHelper->generateSignature( $verifyEmailRouteName, $user->getId(), $user->getOutgoingEmail(), ['id' => $user->getId()], ); $context = $email->getContext(); $context['signedUrl'] = $signatureComponents->getSignedUrl(); $context['expiresAtMessageKey'] = $signatureComponents->getExpirationMessageKey(); $context['expiresAtMessageData'] = $signatureComponents->getExpirationMessageData(); $email->context($context); $this->mailer->send($email); } /** * @throws VerifyEmailExceptionInterface */ public function handleEmailConfirmation(Request $request, UserInterface $user): void { $this->verifyEmailHelper->validateEmailConfirmation($request->getUri(), $user->getId(), $user->getOutgoingEmail()); $user->setIsVerified(true); $this->entityManager->persist($user); $this->entityManager->flush(); } }