src/Controller/Auth/ResetController.php line 47

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Auth;
  4. use App\Container\Model\Certificate\CertificateService;
  5. use App\Model\User\Entity\Certificate\Certificate;
  6. use App\Model\User\UseCase\Certificate\Reset\Request\Command;
  7. use App\Model\User\UseCase\Certificate\Reset\Request\Form;
  8. use App\Model\User\UseCase\Certificate\Reset\Request\Handler;
  9. use App\Model\User\UseCase\User\Reset;
  10. use Doctrine\DBAL\Exception;
  11. use Psr\Log\LoggerInterface;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Contracts\Translation\TranslatorInterface;
  17. class ResetController extends AbstractController
  18. {
  19.     private $logger;
  20.     private $translator;
  21.     public function __construct(LoggerInterface $loggerTranslatorInterface $translator)
  22.     {
  23.         $this->logger $logger;
  24.         $this->translator $translator;
  25.     }
  26.     /**
  27.      * @Route("/test", name="mail.test")
  28.      */
  29.     public function mailTest()
  30.     {
  31.         return $this->render('mail/user/reset-password.html.twig');
  32.     }
  33.     /**
  34.      * @param Request $request
  35.      * @param Reset\Request\Handler $handler
  36.      * @return Response
  37.      * @Route("/password-reset", name="auth.reset.request")
  38.      * @throws Exception
  39.      */
  40.     public function request(Request $requestReset\Request\Handler $handler): Response
  41.     {
  42.         $command = new Reset\Request\Command();
  43.         $form $this->createForm(Reset\Request\Form::class, $command);
  44.         $form->handleRequest($request);
  45.         if ($form->isSubmitted() && $form->isValid()) {
  46.             try {
  47.                 $handler->handle($command);
  48.                 $this->addFlash('success'$this->translator->trans('Check your email', ['%email%' => $command->virtualEmail], 'exceptions'));
  49.                 return $this->redirectToRoute('app_login');
  50.             } catch (\DomainException $e) {
  51.                 $this->logger->error($e->getMessage(), ['exception' => $e]);
  52.                 $this->addFlash('error'$this->translator->trans($e->getMessage(), [], 'exceptions'));
  53.             }
  54.         }
  55.         return $this->render('app/auth/reset/request.html.twig', [
  56.             'form' => $form->createView()
  57.         ]);
  58.     }
  59.     /**
  60.      * @param string $token
  61.      * @param Request $request
  62.      * @param Reset\Reset\Handler $handler
  63.      * @return Response
  64.      * @Route("/password-reset-confirm/{token}", name="auth.reset.confirm")
  65.      */
  66.     public function confirm(string $tokenRequest $requestReset\Reset\Handler $handler): Response
  67.     {
  68.         $command = new Reset\Reset\Command($token);
  69.         $form $this->createForm(Reset\Reset\Form::class, $command);
  70.         $form->handleRequest($request);
  71.         if ($form->isSubmitted() && $form->isValid()) {
  72.             try {
  73.                 $handler->handle($command);
  74.                 $this->addFlash('success'$this->translator->trans('Password is successfully changed.', [], 'exceptions'));
  75.                 return $this->redirectToRoute('app_login');
  76.             } catch (\DomainException $e) {
  77.                 $this->logger->error($e->getMessage(), ['exception' => $e]);
  78.                 $this->addFlash('error'$this->translator->trans($e->getMessage(), [], 'exceptions'));
  79.             }
  80.         }
  81.         return $this->render('app/auth/reset/reset.html.twig', ['form' => $form->createView()]);
  82.     }
  83.     /**
  84.      * @param Request $request
  85.      * @param Handler $handler
  86.      * @param CertificateService $env
  87.      * @return Response
  88.      * @Route("/certificate-reset", name="cert.reset.request")
  89.      */
  90.     public function requestCrypto(Request $requestHandler $handlerCertificateService $env): Response
  91.     {
  92.         $command = new Command($env->getHash());
  93.         $form $this->createForm(Form::class, $command);
  94.         $form->handleRequest($request);
  95.         if ($form->isSubmitted() && $form->isValid()) {
  96.             try {
  97.                 $handler->handle($command);
  98.                 $this->addFlash('success''Замена сертификата произведена');
  99.                 return $this->redirect($this->generateUrl('app_login_crypt'));
  100.             } catch (\Exception $e) {
  101.                 $this->logger->error($e->getMessage(), ['exception' => $e]);
  102.                 $this->addFlash('error'$this->translator->trans($e->getMessage(), [], 'exceptions'));
  103.             }
  104.         }
  105.         return $this->render('app/auth/reset/certReset.html.twig', [
  106.             'form' => $form->createView()
  107.         ]);
  108.     }
  109.     /**
  110.      * @param Request $request
  111.      * @param string $token
  112.      * @param \App\Model\User\UseCase\Certificate\Reset\Confirm\Handler $handler
  113.      * @return Response
  114.      * @Route("certificate-reset-confirm/{token}", name="cert.reset.confirm")
  115.      */
  116.     public function confirmCrypto(
  117.         Request $request,
  118.         string $token,
  119.         \App\Model\User\UseCase\Certificate\Reset\Confirm\Handler $handler
  120.     ): Response
  121.     {
  122.         $command = new \App\Model\User\UseCase\Certificate\Reset\Confirm\Command($token);
  123.         try {
  124.             $handler->handle($command);
  125.             $this->addFlash('success''Ваша ЭЦП успешно изменена');
  126.             return $this->redirect($this->generateUrl('app_login_crypt'));
  127.         } catch (\Exception $e) {
  128.             $this->logger->error($e->getMessage(), ['exception' => $e]);
  129.             $this->addFlash('error'$this->translator->trans($e->getMessage(), [], 'exceptions'));
  130.             return $this->redirect($this->generateUrl('cert.reset.request'));
  131.         }
  132.     }
  133. }