src/Controller/User/PasswordResetController.php line 35

  1. <?php
  2. namespace App\Controller\User;
  3. use App\Controller\AppController;
  4. use App\Entity\User;
  5. use App\Form\User\PasswordRequestResetForm;
  6. use App\Form\User\PasswordResetForm;
  7. use App\Handler\MessageTrait;
  8. use App\Service\User\PasswordResetService;
  9. use Symfony\Component\HttpFoundation\RedirectResponse;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  13. use Twig\Error\LoaderError;
  14. use Twig\Error\RuntimeError;
  15. use Twig\Error\SyntaxError;
  16. /**
  17.  * Class PasswordResetController
  18.  * @package App\Controller\User
  19.  */
  20. class PasswordResetController extends AppController
  21. {
  22.     use AuthTrait;
  23.     /**
  24.      * @Route("/reset-lozinke", name="password-request-reset")
  25.      * @param PasswordResetService $service
  26.      * @return RedirectResponse|Response
  27.      * @throws LoaderError
  28.      * @throws RuntimeError
  29.      * @throws SyntaxError
  30.      */
  31.     public function requestReset(PasswordResetService $service)
  32.     {
  33.         // Ako je korisnik logiran, vrati ga na home page
  34.         if ($this->isGranted('ROLE_USER')) {
  35.             return $this->redirectToRoute('home');
  36.         }
  37.         $form $this->createForm(PasswordRequestResetForm::class);
  38.         $form->handleRequest($this->getRequest());
  39.         if ($form->isSubmitted() && $form->isValid()) {
  40.             $mail $form->getData()['email'];
  41.             $response $service->createView($mail);
  42.             if ($response) {
  43.                 $this->sendCustomMessage(MessageTrait::$success'resetLozinke.poslanMail');
  44.             } else {
  45.                 $this->sendCustomMessage(MessageTrait::$error'resetLozinke.neispravanMail');
  46.             }
  47.             return $this->redirectToRoute('password-request-reset');
  48.         }
  49.         return $this->render('security/password-request-reset.html.twig', [
  50.             'form' => $form->createView()
  51.         ]);
  52.     }
  53.     /**
  54.      * @Route("/reset-lozinke/{token}", name="password-reset")
  55.      * @param User $user
  56.      * @param PasswordResetService $service
  57.      * @param TokenStorageInterface $tokenStorage
  58.      * @return RedirectResponse|Response
  59.      */
  60.     public function reset(User $userPasswordResetService $serviceTokenStorageInterface $tokenStorage)
  61.     {
  62.         if ($this->isGranted('ROLE_USER')) {
  63.             return $this->redirectToRoute('home');
  64.         }
  65.         $form $this->createForm(PasswordResetForm::class, $user, [
  66.             'validation_groups' => 'password-reset'
  67.         ]);
  68.         $form->handleRequest($this->getRequest());
  69.         if ($form->isSubmitted() && $form->isValid()) {
  70.             $data $form->getData();
  71.             $user $service->reset($data);
  72.             $this->authenticateUser($user$tokenStorage);
  73.             $this->sendCustomMessage(MessageTrait::$success'resetLozinke.uspjesnoPromijenjenaLozinka');
  74.             return $this->redirectToRoute('home');
  75.         }
  76.         return $this->render('security/password-reset.html.twig', [
  77.             'form' => $form->createView()
  78.         ]);
  79.     }
  80. }