src/Controller/UserBack/SecurityController.php line 107

Open in your IDE?
  1. <?php
  2. namespace App\Controller\UserBack;
  3. use App\Entity\UserBack\UserBack;
  4. use App\Form\UserBack\NewPasswordType;
  5. use App\Form\UserBack\ResetPasswordType;
  6. use App\Service\Common\DomainManager;
  7. use App\Service\SecurityManager;
  8. use App\Service\UserBack\UserBackManager;
  9. use Exception;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Contracts\Translation\TranslatorInterface;
  16. /**
  17.  * Class SecurityController
  18.  * @package App\Controller\UserBack
  19.  */
  20. class SecurityController extends AbstractController
  21. {
  22.     /**
  23.      * @var SecurityManager
  24.      */
  25.     private $securityManager;
  26.     /**
  27.      * @var TranslatorInterface
  28.      */
  29.     private $translator;
  30.     /**
  31.      * @var UserBackManager
  32.      */
  33.     private $userBackManager;
  34.     public function __construct(
  35.         SecurityManager $securityManager,
  36.         DomainManager $domainManager,
  37.         TranslatorInterface $translator,
  38.         UserBackManager $userBackManager
  39.     )
  40.     {
  41.         $this->securityManager $securityManager;
  42.         $this->domainManager $domainManager;
  43.         $this->translator $translator;
  44.         $this->userBackManager $userBackManager;
  45.     }
  46.     /**
  47.      * @Route("/login", name="login")
  48.      * @param AuthenticationUtils $authenticationUtils
  49.      * @return Response
  50.      */
  51.     public function login(AuthenticationUtils $authenticationUtils): Response
  52.     {
  53.         $error $authenticationUtils->getLastAuthenticationError();
  54.         $lastUsername $authenticationUtils->getLastUsername();
  55.         return $this->render('user-back/login.html.twig', [
  56.             'lastUsername' => $lastUsername,
  57.             'error' => $error
  58.         ]);
  59.     }
  60.     /**
  61.      * verify if user have a reset password
  62.      * verify if token is valid
  63.      * verify if the link is not expired
  64.      * update password user
  65.      * redirect to dashboard logged (enjoy \o/)
  66.      * @Route("/new-password", name="new_password")
  67.      * @param Request $request
  68.      * @return Response
  69.      * @throws Exception
  70.      */
  71.     public function createPassword(Request $request): Response
  72.     {
  73.         $form $this->createForm(NewPasswordType::class);
  74.         $form->handleRequest($request);
  75.         if ($form->isSubmitted() && $form->isValid()) {
  76.             if (!$this->securityManager->createPassword($form)) {
  77.                 return $this->redirectToRoute('reset_password');
  78.             }
  79.             return $this->redirectToRoute('home');
  80.         }
  81.         $this->securityManager->formIsNotValid($form);
  82.         return $this->render("user-back/new_password.html.twig", [
  83.             'form' => $form->createView(),
  84.         ]);
  85.     }
  86.     /**
  87.      * @Route("/reset-password", name="reset_password")
  88.      * @param Request $request
  89.      * @return Response
  90.      * @throws Exception
  91.      */
  92.     public function resetPassword(Request $request): Response
  93.     {
  94.         $form $this->createForm(ResetPasswordType::class);
  95.         $form->handleRequest($request);
  96.         if ($form->isSubmitted() && $form->isValid()) {
  97.             $email $form->get('email')->getData();
  98.             if (!$email || !$this->securityManager->sendResetPassword($email)) {
  99.                 $this->addFlash('warning'$this->translator->trans('user.email.no.exist', [], 'users'));
  100.                 return $this->redirectToRoute('reset_password');
  101.             }
  102.             return $this->render("user-back/send_password.html.twig", []);
  103.         }
  104.         return $this->render("user-back/reset_password.html.twig", [
  105.             'form' => $form->createView(),
  106.         ]);
  107.     }
  108.     /**
  109.      * @Route("/user-back/edit/{uuid}/password", name="user_back_password")
  110.      * @param Request $request
  111.      * @param UserBack $userBack
  112.      * @return Response
  113.      */
  114.     public function resetEditUserBackPassword(Request $requestUserBack $userBack): Response
  115.     {
  116.         $userBack->setPassword($userBack->getPassword());
  117.         $form $this->createForm(NewPasswordType::class, $userBack);
  118.         $form->handleRequest($request);
  119.         if ($form->isSubmitted() && $form->isValid()) {
  120.             $this->securityManager->editPassword($userBack);
  121.             $this->addFlash('success'$this->translator->trans('password.edit.success', [], 'forms'));
  122.         }
  123.         $this->securityManager->formIsNotValid($form);
  124.         return $this->render("user-back/reset_edit_password.html.twig", [
  125.             'userBack' => $userBack,
  126.             'form' => $form->createView(),
  127.         ]);
  128.     }
  129. }