createForm(RegistrationFormType::class, $user); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { /** @var string $plainPassword */ $plainPassword = $form->get('plainPassword')->getData(); $user->setPassword($userPasswordHasher->hashPassword($user, $plainPassword)); $entityManager->persist($user); $entityManager->flush(); // generate a signed url and email it to the user $this->emailVerifier->sendEmailConfirmation('app_verify_email', $user, (new TemplatedEmail()) ->to((string) $user->getEmail()) ->subject($this->translator->trans('Please Confirm your Email')) ->htmlTemplate('backoffice/registration/confirmation_email.html.twig'), ); $response = $security->login($user, 'form_login', 'main'); \assert($response instanceof Response); return $response; } return $this->render('backoffice/registration/register.html.twig', [ 'registrationForm' => $form, ]); } #[Route('/verify/email', name: 'app_verify_email')] public function verifyUserEmail(Request $request, TranslatorInterface $translator, UserRepository $userRepository): Response { $id = $request->query->get('id'); if (null === $id) { return $this->redirectToRoute('app_register'); } $user = $userRepository->find($id); if (null === $user) { return $this->redirectToRoute('app_register'); } // validate email confirmation link, sets User::isVerified=true and persists try { $this->emailVerifier->handleEmailConfirmation($request, $user); } catch (VerifyEmailExceptionInterface $verifyEmailException) { $this->addFlash('verify_email_error', $translator->trans($verifyEmailException->getReason(), [], 'VerifyEmailBundle')); return $this->redirectToRoute('app_register'); } $this->addFlash('success', $this->translator->trans('Your email address has been verified.')); return $this->redirectToRoute('app_backoffice_index'); } }