src/Controller/AccountPasswordResetController.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Form\ReceivePasswordForm;
  4. use App\Repository\UserRepository;
  5. use App\Security\LoginFormAuthenticator;
  6. use App\Service\UserService;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. class AccountPasswordResetController extends AbstractController
  12. {
  13.     public function receivePassword(UserService $userService, Request $request, UserRepository $userRepository): Response
  14.     {
  15.         $user = $userRepository->findOneBy(['email' => $request->request->get("email")]);
  16.         if ($user) {
  17.             $userService->saveReceiveCode($user);
  18.             return $this->render('security/receive_password_sent.twig');
  19.         }
  20.         return $this->render('security/receive_password.twig', [
  21.             'email' => $request->request->get("email")
  22.         ]);
  23.     }
  24.     public function receiveConfirmation(
  25.         Request $request,
  26.         UserService $userService,
  27.         LoginFormAuthenticator $authenticator,
  28.         UserAuthenticatorInterface $userAuthenticator,
  29.         string $id,
  30.         string $code
  31.     ): Response|null {
  32.         $user = $userService->findUserByIdAndConfirmationCode((int)$id, $code);
  33.         if (!$user) {
  34.             return $this->redirectToRoute('login');
  35.         }
  36.         $form = $this->createForm(ReceivePasswordForm::class, $user);
  37.         $form->handleRequest($request);
  38.         if ($form->isSubmitted() && $form->isValid()) {
  39.             $user = $form->getData();
  40.             $userService->receivePassword($user);
  41.             return $userAuthenticator->authenticateUser($user, $authenticator, $request);
  42.         }
  43.         return $this->render('security/receive_password_edit.twig', ['form' => $form->createView()]);
  44.     }
  45. }