emailVerifier = $emailVerifier; } /** * @Route("/auth/register", name="register") * @Route("/{_locale<%app.supported_locales%>}/auth/register", name="register_i18n") */ public function register(Request $request, UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager): Response { $user = new User(); $form = $this->createForm(RegistrationFormType::class, $user); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { // encode the plain password $user->setPassword( $userPasswordHasher->hashPassword( $user, $form->get('plainPassword')->getData() ) ); $entityManager->persist($user); $entityManager->flush(); // generate a signed url and email it to the user $this->emailVerifier->sendEmailConfirmation('app_verify_email', $user, (new TemplatedEmail()) ->from(new Address('mailer@1ib.re', 'BirdNET-stream Mail Bot')) ->to($user->getEmail()) ->subject('Please Confirm your Email') ->htmlTemplate('registration/confirmation_email.html.twig') ); // do anything else you need here, like send an email return $this->redirectToRoute('login_i18n'); } return $this->render('registration/register.html.twig', [ 'registrationForm' => $form->createView(), ]); } /** * @Route("/auth/verify/email", name="verify_email") * @Route("/{_locale<%app.supported_locales%>}/auth/verify/email", name="verify_email_i18n") */ public function verifyUserEmail(Request $request, TranslatorInterface $translator): Response { $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY'); // validate email confirmation link, sets User::isVerified=true and persists try { $this->emailVerifier->handleEmailConfirmation($request, $this->getUser()); } catch (VerifyEmailExceptionInterface $exception) { $this->addFlash('verify_email_error', $translator->trans($exception->getReason(), [], 'VerifyEmailBundle')); return $this->redirectToRoute('register_i18n'); } // @TODO Change the redirect on success and handle or remove the flash message in your templates $this->addFlash('success', 'Your email address has been verified.'); return $this->redirectToRoute('login_i18n'); } }