src/Controller/Web/User/PasswordResetController.php line 24

  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Web\User;
  4. use App\Controller\Web\AbstractAppController;
  5. use App\Entity\User;
  6. use App\Form\User\PasswordRequestResetForm;
  7. use App\Form\User\PasswordResetForm;
  8. use App\Handler\AuthTrait;
  9. use App\Handler\MessageTrait;
  10. use App\Service\User\PasswordResetService;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  15. final class PasswordResetController extends AbstractAppController
  16. {
  17.     use AuthTrait;
  18.     #[Route('/reset-lozinke''password-request-reset')]
  19.     public function requestReset(Request $requestPasswordResetService $passwordResetService): Response
  20.     {
  21.         if ($this->isGranted('ROLE_USER')) {
  22.             return $this->redirectToRoute('dashboard');
  23.         }
  24.         $form $this->createForm(
  25.             PasswordRequestResetForm::class,
  26.             null,
  27.             [
  28.                 'validation_groups' => ['request_password_reset']
  29.             ]
  30.         );
  31.         $form->handleRequest($request);
  32.         if ($form->isSubmitted() && $form->isValid()) {
  33.             $user $form->getData();
  34.             $passwordResetService->requestReset($user);
  35.             $this->sendCustomMessage(self::$success'passwordReset.mailSend');
  36.             return $this->redirectToRoute('password-request-reset');
  37.         }
  38.         return $this->render('user/password-request-reset.html.twig', [
  39.             'form' => $form->createView()
  40.         ]);
  41.     }
  42.     #[Route('/reset-lozinke/{passwordResetToken}''password-reset')]
  43.     public function reset(
  44.         User $user,
  45.         Request $request,
  46.         TokenStorageInterface $tokenStorage,
  47.         PasswordResetService $passwordResetService
  48.     ): Response
  49.     {
  50.         if ($this->isGranted('ROLE_USER')) {
  51.             return $this->redirectToRoute('dashboard');
  52.         }
  53.         $form $this->createForm(PasswordResetForm::class, $user, [
  54.             'validation_groups' => ['password_reset']
  55.         ]);
  56.         $form->handleRequest($request);
  57.         if ($form->isSubmitted() && $form->isValid()) {
  58.             $user $form->getData();
  59.             $passwordResetService->reset($user);
  60.             $this->authenticateUser($user$tokenStorage);
  61.             $this->sendCustomMessage(self::$success'passwordReset.successChangedPassword');
  62.             return $this->redirectToRoute('dashboard');
  63.         }
  64.         return $this->render('user/password-reset.html.twig', [
  65.             'form' => $form->createView()
  66.         ]);
  67.     }
  68. }