src/Controller/FrontController.php line 23

  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Google\Cloud\RecaptchaEnterprise\V1\RecaptchaEnterpriseServiceClient;
  8. use Google\Cloud\RecaptchaEnterprise\V1\Event;
  9. use Google\Cloud\RecaptchaEnterprise\V1\Assessment;
  10. use Google\Cloud\RecaptchaEnterprise\V1\TokenProperties\InvalidReason;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use App\Entity\Engagement;
  13. class FrontController extends AbstractController {
  14.     #[Route(path'/'name'home')]
  15.     public function index(): Response {
  16.         return $this->render('front/home.html.twig');
  17.     }
  18.     
  19.     #[Route(path'/devenir-benevole'name'devenir')]
  20.     public function devenir(Request $requestEntityManagerInterface $em): Response {
  21.         $data = [
  22.             'ville' => $request->get('ville'false),
  23.             'civilite' => $request->get('civilite'false),
  24.             'nom' => $request->get('nom'false),
  25.             'prenom' => $request->get('prenom'false),
  26.             'type_deva' => $request->get('type_deva'false),
  27.             'nivol' => $request->get('nivol'false),
  28.             'birth' => $request->get('birth'false),
  29.             'email' => $request->get('email'false),
  30.             'tel' => $request->get('tel'false),
  31.             'profession' => $request->get('profession'false)
  32.         ];
  33.         if ($request->isMethod('post')) {
  34.             $data['secure'] = 'ok';
  35.             $client = new RecaptchaEnterpriseServiceClient([
  36.               'credentials' => dirname(__FILE__).'/../../var/google.json',
  37.               'projectId' => $_ENV['GOOGLE_PROJECT']
  38.             ]);
  39.             $projectName $client->projectName($_ENV['GOOGLE_PROJECT']);
  40.             $event = (new Event())->setSiteKey($_ENV['GOOGLE_KEY'])->setToken($request->get('g-recaptcha-response'));
  41.             $assessment = (new Assessment())->setEvent($event);
  42.             try {
  43.               $response $client->createAssessment(
  44.                   $projectName,
  45.                   $assessment
  46.               );
  47.               // You can use the score only if the assessment is valid,
  48.               // In case of failures like re-submitting the same token, getValid() will return false
  49.               if ($response->getTokenProperties()->getValid() == false || $response->getRiskAnalysis()->getScore()<0.5) {
  50.                   $data['secure'] = 'ko';
  51.               } else {
  52.                   $dossier $em->getRepository(Engagement::class)->findOneBy(['email'=>$request->get('email')]);
  53.                   if($dossier) {
  54.                       $data['existe'] = 1;
  55.                       return $this->render('front/devenir-resultat.html.twig'$data);
  56.                   } else {
  57.                     $dossier = new Engagement();
  58.                     $dossier->setCivilite($request->get('civilite'));
  59.                     $dossier->setBirthdate(new \Datetime($request->get('birth')));
  60.                     $dossier->setFirstname($request->get('prenom'));
  61.                     $dossier->setLastname($request->get('nom'));
  62.                     $dossier->setDevaType($request->get('type_deva'));
  63.                     $dossier->setPhone($request->get('tel'));
  64.                     $dossier->setEmail($request->get('email'));
  65.                     $dossier->setJob($request->get('profession'));
  66.                     $dossier->setCreationDate(new \Datetime());
  67.                     $dossier->setUpdatedDate(new \Datetime());
  68.                     $dossier->setToken(md5($request->get('prenom').time().$request->get('nom')));
  69.                     $dossier->setDollyId(0);
  70.                     $dossier->setNivol($request->get('nivol'));
  71.                     $dossier->setStatus(1);
  72.                     $this->managerRegistry->getManager('default')->persist($dossier);
  73.                     $this->managerRegistry->getManager('default')->flush();
  74.                     return new RedirectResponse('/dossier-enregistre');
  75.                 }
  76.                   
  77.               }
  78.             } catch (exception $e) {
  79.                 $data['secure'] = 'ko';
  80.             }
  81.         }
  82.         return $this->render('front/devenir.html.twig'$data);
  83.     }
  84.     
  85.     #[Route(path'/suivi-dossier-benevole'name'suivi')]
  86.     public function suivi(): Response {
  87.         return $this->render('front/home.html.twig');
  88.     }
  89.     
  90.     #[Route(path'/dossier-enregistre'name'dossierok')]
  91.     public function dossierok(): Response {
  92.         return $this->render('front/devenir-resultat.html.twig');
  93.     }
  94.     
  95.     #[Route(path'/nous-contacter'name'contact')]
  96.     public function contact(): Response {
  97.         return $this->render('front/home.html.twig');
  98.     }
  99. }