src/Controller/ActivationController.php line 64

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\SignUp;
  4. use App\Entity\Emails\Emails;
  5. use App\Entity\Emails\GeneratorMail;
  6. use App\Form\ActivationType;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\Form\FormError;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Mailer\MailerInterface;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  16. class ActivationController extends AbstractController
  17. {
  18.     protected $em;
  19.     public function __construct(EntityManagerInterface $entityManager)
  20.     {
  21.         $this->em $entityManager;
  22.     }
  23.     /**
  24.      * @Route("/send/activation", name="app_activation_code")
  25.      */
  26.     public function getNewCodeActivation(Request $requestMailerInterface $mailer)
  27.     {
  28.         $statut false;
  29.         $email $request->get('email'null);
  30.         if(!empty($email)){
  31.             $result $this->em->getRepository(SignUp::class)->findOneBy([
  32.                 "email"             => $email
  33.             ]);
  34.             if(!empty($result)){
  35.                 $configMail $this->em->getRepository(Emails::class)->findOneBy(["template_name" => "active-account"]);
  36.                 if(!empty($configMail)){
  37.                     $emailBody = (new GeneratorMail(new TemplatedEmail$configMail))->setMail(
  38.                         $email,
  39.                         [
  40.                             'mail'              => $email,
  41.                             'compagny_name'     => $result->getCompagnieName(),
  42.                             'link_activation'   => $this->getParameter('app').$this->generateUrl('activation', ['email'=>$email'code'=>$result->getCodeActivation()]),
  43.                             'code_activation'   => $result->getCodeActivation(),
  44.                         ]
  45.                     );
  46.                     $mailer->send($emailBody);
  47.                     $statut true;
  48.                 }
  49.             }
  50.         }
  51.         return new JsonResponse($statut);
  52.     }
  53.     /**
  54.      * @Route("/activation", name="app_activation")
  55.      */
  56.     public function index(Request $request): Response
  57.     {
  58.         $success false;
  59.         $email $request->get('email''');
  60.         $code $request->get('code''');
  61.         $form $this->createForm(ActivationType::class, ['email'=>$email'code_activation'=>$code]);
  62.         $form->handleRequest($request);
  63.         if($form->isSubmitted() && $form->isValid()){
  64.             $params $form->getData();
  65.             $result $this->em->getRepository(SignUp::class)->findOneBy([
  66.                 "email"             => $params['email'],
  67.                 "code_activation"   => $params['code_activation'],
  68.             ]);
  69.             if(empty($result)){
  70.                 $message['fr'] = "Nous n'avons pas réussi à vous authentifier.";
  71.                 $form->get('code_activation')->addError(new FormError($message['fr']));
  72.             }elseif($result->getStatut() == 1){
  73.                 return $this->redirect($_ENV['APP_SOFT']);
  74.             }else{
  75.                 $result->setStatut(1);
  76.                 $result->setVisite(1);
  77.                 $this->em->merge($result);
  78.                 $this->em->flush();
  79.                 $success true;
  80.             }
  81.             //$this->em->persist($signUp);
  82.             //$this->em->flush();
  83.             //return $this->redirectToRoute('activation', ["email"=>$signUp->getEmail()]);
  84.         }
  85.         return $this->render('activation/index.html.twig', [
  86.             'form'      => $form->createView(),
  87.             'email'     => $email,
  88.             'code'     => $code,
  89.             'success'   => $success
  90.         ]);
  91.     }
  92. }