src/Controller/Auth/SignUpController.php line 36

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Auth;
  4. use App\Model\Admin\Entity\Settings\Key;
  5. use App\Model\User\UseCase\User\SignUp;
  6. use App\ReadModel\Admin\Settings\SettingsFetcher;
  7. use Psr\Log\LoggerInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. class SignUpController extends AbstractController
  14. {
  15.     private $logger;
  16.     private $translator;
  17.     public function __construct(
  18.         LoggerInterface $logger,
  19.         TranslatorInterface $translator
  20.     ) {
  21.         $this->logger $logger;
  22.         $this->translator $translator;
  23.     }
  24.     /**
  25.      * @param Request $request
  26.      * @param SignUp\Request\Handler $handler
  27.      * @return Response
  28.      * @Route("/sign-up",name="auth.sign.up")
  29.      */
  30.     public function request(Request $requestSignUp\Request\Handler $handlerSettingsFetcher $settingsFetcher): Response
  31.     {
  32.         $privacyPolicyLink $settingsFetcher->findDetailByKey(Key::privacyPolicyLink());
  33.         $keySmartCaptchaClientKey $settingsFetcher->findDetailByKey(Key::keySmartCaptchaClientKey());
  34.         $keySmartCaptchaStatus $settingsFetcher->findDetailByKey(Key::keySmartCaptchaStatus());
  35.         $keySmartCaptchaTest $settingsFetcher->findDetailByKey(Key::keySmartCaptchaTest());
  36.         $command = new SignUp\Request\Command($request->getClientIp() ?? '127.0.0.1');
  37.         $form $this->createForm(SignUp\Request\Form::class, $command);
  38.         $form->handleRequest($request);
  39.         if ($form->isSubmitted() && $form->isValid()) {
  40.             try {
  41.                 $smartToken $request->request->get('smart-token') ?? null;
  42.                 $command->smartToken $smartToken;
  43.                 $handler->handle($command);
  44.                 $this->addFlash('success'$this->translator->trans("A letter has been sent to email %email%. follow the link to confirm your email.", ['%email%' => $command->email], 'exceptions'));
  45.                 return $this->redirectToRoute('app_login');
  46.             } catch (\DomainException $e) {
  47.                 $this->logger->error($e->getMessage(), ['exception' => $e]);
  48.                 $this->addFlash('error'$this->translator->trans($e->getMessage(), [], 'exceptions'));
  49.             }
  50.         }
  51.         return $this->render('app/auth/signup.html.twig', [
  52.             'form' => $form->createView(),
  53.             'privacyPolicyLink' => $privacyPolicyLink,
  54.             'keySmartCaptchaClientKey' => $keySmartCaptchaClientKey,
  55.             'keySmartCaptchaStatus' => $keySmartCaptchaStatus,
  56.             'keySmartCaptchaTest' => $keySmartCaptchaTest,
  57.         ]);
  58.     }
  59.     /**
  60.      * @param string $token
  61.      * @param SignUp\Confirm\ByToken\Handler $handler
  62.      * @return Response
  63.      * @Route("/sign-confirm/{token}", name="auth.sign.confirm")
  64.      */
  65.     public function confirm(string $tokenSignUp\Confirm\ByToken\Handler $handler): Response
  66.     {
  67.         try {
  68.             $handler->handle(new SignUp\Confirm\ByToken\Command($token));
  69.             $this->addFlash('success'$this->translator->trans('Email is successfully confirmed.', [], 'exceptions'));
  70.             return $this->redirectToRoute('app_login');
  71.         } catch (\DomainException $e) {
  72.             $this->logger->error($e->getMessage(), ['exception' => $e]);
  73.             $this->addFlash('error'$this->translator->trans($e->getMessage(), [], 'exceptions'));
  74.             return $this->redirectToRoute('app_login');
  75.         }
  76.     }
  77. }