src/Controller/ProfilController.php line 1431

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  9. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  10. use Symfony\Contracts\HttpClient\HttpClientInterface;
  11. use Doctrine\Persistence\ManagerRegistry;
  12. use Symfony\Component\Mailer\MailerInterface;
  13. use App\Model\Globals;
  14. use App\Entity\DicGouvernorat;
  15. use App\Entity\DicDelegation;
  16. use App\Entity\DicImada;
  17. use App\Entity\DicCircuit;
  18. use App\Entity\Eleveur;
  19. use App\Entity\Inseminateur;
  20. use App\Entity\AgentOep;
  21. use App\Entity\Agent;
  22. use App\Entity\User;
  23. use App\Entity\Partenaire;
  24. use App\Form\EleveurType;
  25. use App\Form\InseminateurType;
  26. use App\Form\AgentOepType;
  27. use App\Form\AgentType;
  28. use App\Form\UserType;
  29. use Psr\Log\LoggerInterface;
  30. use Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface;
  31. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  32. /**
  33.  * @Route("/{_locale}", requirements={"_locale": "ar|fr"})
  34.  */
  35. class ProfilController extends AbstractController
  36. {
  37.     private $httpClient;
  38.     public function __construct(HttpClientInterface $httpClient)
  39.     {
  40.         $this->httpClient $httpClient;
  41.     }
  42.     private function isPasswordStrong($password): bool
  43.     {
  44.         $pattern '/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/';
  45.         return preg_match($pattern$password);
  46.     }
  47.     #[Route('/eleveur/register'name'eleveur_register'methods: ['GET''POST'])]
  48.     public function registerEleveur(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasher,  LoggerInterface $logger): Response
  49.     {
  50.         $logger->info('eleveur register ');
  51.         $em $doctrine->getManager();
  52.         $user = new User();
  53.         $eleveur = new Eleveur();
  54.         $gouvernorats $doctrine->getRepository(DicGouvernorat::class)->findAll();
  55.         $delegations $doctrine->getRepository(DicDelegation::class)->findAll();
  56.         $imadas $doctrine->getRepository(DicImada::class)->findAll();
  57.         $form $this->createForm(EleveurType::class, $eleveur);
  58.         $form->handleRequest($request);
  59.         //&& $form->isValid()
  60.         if ($form->isSubmitted() && $form->isValid()) {
  61.             $logger->info('eleveur register post valid ');
  62.             if ($request->request->has('g-recaptcha-response')) {
  63.                // dump($request);die;
  64.                
  65.             /**** verification recaptcha avec siteverify ****************/   
  66.                $recapResp $request->get('g-recaptcha-response');
  67.                 $logger->info('eleveur register post '.$recapResp);
  68.                 if ($recapResp && $recapResp != '') {
  69.                     $recapResp $request->get('g-recaptcha-response');
  70.                     $recaptchaSecret '6LdCul0hAAAAALOxxC6Dz8Uqyh77-Q8zw4NhSAf7';
  71.                     $verificationResponse $this->httpClient->request(
  72.                         'POST',
  73.                         'https://www.google.com/recaptcha/api/siteverify',
  74.                         [
  75.                             'body' => [
  76.                                 'secret' => $recaptchaSecret,
  77.                                 'response' => $recapResp,
  78.                             ],
  79.                         ]
  80.                     );
  81.                     $verificationData $verificationResponse->toArray();
  82.                     //dump($recapResp, $verificationData);die;
  83.                     $logger->info('eleveur secret post '.$recaptchaSecret);
  84.                     $logger->info('recap response '.$recapResp);
  85.                     $logger->info('eleveur register repsonse  post ' json_encode($verificationData));
  86.                 /**** end verification avec google recaptcha verify  */
  87.                     /*if (isset($verificationData['success']) && $verificationData['success'] === true) {*/
  88.                         $isExist $doctrine->getRepository(Eleveur::class)->findOneBy(['codElv' => $request->request->get('username')]);
  89.                         if ($isExist != null) {
  90.                             try {
  91.                                 //$isExistUser= $doctrine->getRepository(User::class)->isExist($request->request->get('email'),$request->request->get('username'));
  92.                                 $isExistUser $doctrine->getRepository(User::class)->isExist($request->request->get('username'));
  93.                                 if (count($isExistUser) == 0) {
  94.                                     $password $request->request->get('password');
  95.                                     // Server-side password validation
  96.                                     if (!$this->isPasswordStrong($password)) {
  97.                                         // $this->addFlash('pass_error', 'Le mot de passe doit contenir au moins 8 caractères, une majuscule, une minuscule et un chiffre.');
  98.                                         //dump($password);die;
  99.                                         $this->addFlash('pass_error''true');
  100.                                         return $this->redirectToRoute('eleveur_register');
  101.                                     }
  102.                                     $user = new User();
  103.                                     $user->setEmail($request->request->get('email'));
  104.                                     $user->setPassword(
  105.                                         $passwordHasher->hashPassword(
  106.                                             $user,
  107.                                             $request->request->get('password')
  108.                                         )
  109.                                     );
  110.                                     $user->setRoles(["ROLE_ELEVEUR"]);
  111.                                     $user->setUsername($request->request->get('username'));
  112.                                     $user->setEtat(1);
  113.                                     $user->setCreatedAt(new \DateTime());
  114.                                     $em->persist($user);
  115.                                     $em->flush();
  116.                                     $isExist->setUser($user);
  117.                                     $isExist->setImada($eleveur->getImada());
  118.                                     $isExist->setDelegation($isExist->getDelegation());
  119.                                     $isExist->setGouvernorat($isExist->getGouvernorat());
  120.                                     $isExist->setNprElvFr($eleveur->getNprElvFr());
  121.                                     $isExist->setNprElvAr($eleveur->getNprElvAr());
  122.                                     $isExist->setAdresse($eleveur->getAdresse());
  123.                                     $isExist->setNumTel($eleveur->getNumTel());
  124.                                     $isExist->setNumFax($eleveur->getNumFax());
  125.                                     $isExist->setTypeElv($eleveur->getTypeElv());
  126.                                     $isExist->setIdentElv($eleveur->getIdentElv());
  127.                                     $isExist->setUpdatedAt(new \DateTime());
  128.                                     $em->persist($isExist);
  129.                                     $em->flush();
  130.                                     $em->flush();
  131.                                     $this->addFlash('success''Votre inscription a été effectuée avec succès !');
  132.                                     return $this->redirectToRoute('login');
  133.                                 } else {
  134.                                     $this->addFlash(
  135.                                         'failure_register_user_exist',
  136.                                         'true'
  137.                                     );
  138.                                     $user->setEmail($request->request->get('email'));
  139.                                     $user->setUsername($request->request->get('username'));
  140.                                     return $this->render('profil/register_eleveur.html.twig', [
  141.                                         'controller_name' => 'ProfilController',
  142.                                         'gouvernorats' => $gouvernorats,
  143.                                         'delegations' => $delegations,
  144.                                         'imadas' => $imadas,
  145.                                         'eleveur' => $eleveur,
  146.                                         'user' => $user,
  147.                                         'form' => $form->createView(),
  148.                                     ]);
  149.                                 }
  150.                             } catch (Exception $e) {
  151.                                 return $this->redirectToRoute('eleveur_register');
  152.                             }
  153.                         } else {
  154.                             $user->setEmail($request->request->get('email'));
  155.                             $user->setUsername($request->request->get('username'));
  156.                             $this->addFlash(
  157.                                 'failure_register_no_eleveur',
  158.                                 'true'
  159.                             );
  160.                             return $this->render('profil/register_eleveur.html.twig', [
  161.                                 'controller_name' => 'ProfilController',
  162.                                 'gouvernorats' => $gouvernorats,
  163.                                 'delegations' => $delegations,
  164.                                 'imadas' => $imadas,
  165.                                 'eleveur' => $eleveur,
  166.                                 'user' => $user,
  167.                                 'form' => $form->createView(),
  168.                             ]);
  169.                         } //end is exist user
  170.                     /*}*/
  171.                 }
  172.                 //captcha is null
  173.             }
  174.             $this->addFlash(
  175.                 'failure_register',
  176.                 'true'
  177.             );
  178.             $user->setEmail($request->request->get('email'));
  179.             $user->setUsername($request->request->get('username'));
  180.             return $this->render('profil/register_eleveur.html.twig', [
  181.                 'controller_name' => 'ProfilController',
  182.                 'gouvernorats' => $gouvernorats,
  183.                 'delegations' => $delegations,
  184.                 'imadas' => $imadas,
  185.                 'eleveur' => $eleveur,
  186.                 'user' => $user,
  187.                 'form' => $form->createView(),
  188.             ]);
  189.         } //end submit form
  190.         return $this->render('profil/register_eleveur.html.twig', [
  191.             'controller_name' => 'ProfilController',
  192.             'gouvernorats' => $gouvernorats,
  193.             'delegations' => $delegations,
  194.             'imadas' => $imadas,
  195.             'eleveur' => $eleveur,
  196.             'user' => $user,
  197.             'form' => $form->createView(),
  198.         ]);
  199.     }
  200.     #[Route('/eleveur/rest_password'name'eleveur_reset_password'methods: ['GET''POST'])]
  201.     public function resetPasswordEleveur(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasherMailerInterface $mailer): Response
  202.     {
  203.         $em $doctrine->getManager();
  204.         $user = new User();
  205.         $form $this->createForm(UserType::class, $user);
  206.         $form->handleRequest($request);
  207.         //&& $form->isValid()
  208.         if ($form->isSubmitted()) {
  209.             if ($request->request->has('g-recaptcha-response')) {
  210.                 if ($request->request->get('g-recaptcha-response') != '') {
  211.                     $userExist $doctrine->getRepository(User::class)->findOneBy(['email' => $user->getEmail()]);
  212.                     if ($userExist !== null) {
  213.                         try {
  214.                             $password = (string)(random_int(100000999999));
  215.                             $userExist->setPassword(
  216.                                 $passwordHasher->hashPassword(
  217.                                     $userExist,
  218.                                     $password
  219.                                 )
  220.                             );
  221.                             $em->persist($userExist);
  222.                             $em->flush();
  223.                             $to $user->getEmail();
  224.                             //$to='ryahyaoui@progress.tn';
  225.                             $sub '[OEP] Votre mot de passe';
  226.                             $msg '<p>Bonjour ' $user->getUsername() . ', <br/> Votre mot de passe est ' $password '.</p>';
  227.                             $globals = new Globals();
  228.                             $globals->sendEmail($mailer$to$sub$msg);
  229.                             return $this->redirectToRoute('login');
  230.                         } catch (Exception $e) {
  231.                             return $this->redirectToRoute('eleveur_reset_password');
  232.                         }
  233.                     } else {
  234.                         $user->setEmail($user->getEmail());
  235.                         $this->addFlash(
  236.                             'failure_register',
  237.                             'true'
  238.                         );
  239.                         return $this->render('security/reset_password_eleveur.html.twig', [
  240.                             'controller_name' => 'ProfilController',
  241.                             'user' => $user,
  242.                             'form' => $form->createView(),
  243.                         ]);
  244.                     } //end user exist
  245.                 }
  246.             }
  247.             $user->setEmail($user->getEmail());
  248.             $this->addFlash(
  249.                 'failure_recaptcha',
  250.                 'true'
  251.             );
  252.             return $this->render('security/reset_password_eleveur.html.twig', [
  253.                 'controller_name' => 'ProfilController',
  254.                 'user' => $user,
  255.                 'form' => $form->createView(),
  256.             ]);
  257.         } //end submit
  258.         return $this->render('security/reset_password_eleveur.html.twig', [
  259.             'controller_name' => 'ProfilController',
  260.             'user' => $user,
  261.             'form' => $form->createView(),
  262.         ]);
  263.     }
  264.     /**
  265.      * @IsGranted("ROLE_ELEVEUR")
  266.      */
  267.     #[Route('/eleveur/profil'name'eleveur_profil'methods: ['GET''POST'])]
  268.     public function profilEleveur(Request $requestManagerRegistry $doctrine): Response
  269.     {
  270.         if ($this->isGranted('ROLE_ELEVEUR') == false) {
  271.             return $this->render('erreur/access_denied.html.twig', []);
  272.         }
  273.         $em $doctrine->getManager();
  274.         $user $this->getUser();
  275.         $eleveur $doctrine->getRepository(Eleveur::class)->findOneBy(['user' => $user]);
  276.         $gouvernorats $doctrine->getRepository(DicGouvernorat::class)->findAll();
  277.         $delegations null;
  278.         $imadas null;
  279.         if ($eleveur->getGouvernorat() != null) {
  280.             $delegations $doctrine->getRepository(DicDelegation::class)->findBy(['gouvernorat' => $eleveur->getGouvernorat()]);
  281.         }
  282.         if ($eleveur->getDelegation() != null) {
  283.             $imadas $doctrine->getRepository(DicImada::class)->findBy(['delegation' => $eleveur->getDelegation()]);
  284.         }
  285.         $form $this->createForm(EleveurType::class, $eleveur);
  286.         $form->handleRequest($request);
  287.         //&& $form->isValid()
  288.         if ($form->isSubmitted()) {
  289.             $eleveur->setUpdatedAt(new \DateTime());
  290.             $em->persist($eleveur);
  291.             $em->flush();
  292.             return $this->redirectToRoute('eleveur_profil');
  293.         }
  294.         return $this->render('profil/profil_eleveur.html.twig', [
  295.             'controller_name' => 'ProfilController',
  296.             'gouvernorats' => $gouvernorats,
  297.             'delegations' => $delegations,
  298.             'imadas' => $imadas,
  299.             'eleveur' => $eleveur,
  300.             'form' => $form->createView(),
  301.         ]);
  302.     }
  303.     /**
  304.      * @IsGranted("ROLE_ELEVEUR")
  305.      */
  306.     #[Route('/eleveur/password/edit'name'eleveur_edit_password'methods: ['GET''POST'])]
  307.     public function passwordEleveur(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasher): Response
  308.     {
  309.         if ($this->isGranted('ROLE_ELEVEUR') == false) {
  310.             return $this->render('erreur/access_denied.html.twig', []);
  311.         }
  312.         $em $doctrine->getManager();
  313.         $user $this->getUser();
  314.         if ($passwordHasher->isPasswordValid($user$request->request->get('password'))) {
  315.             if ($request->request->get('newPassword') === $request->request->get('confirmPassword')) {
  316.                 $password $request->request->get('newPassword');
  317.                 if (!$this->isPasswordStrong($password)) {
  318.                     $this->addFlash('pass_error''true');
  319.                     return $this->redirectToRoute('eleveur_profil');
  320.                 }
  321.                 $user->setPassword(
  322.                     $passwordHasher->hashPassword(
  323.                         $user,
  324.                         $request->request->get('newPassword')
  325.                     )
  326.                 );
  327.                 $user->setUpdatedAt(new \DateTime());
  328.                 $em->persist($user);
  329.                 $em->flush();
  330.                 $this->addFlash(
  331.                     'success_password_edit',
  332.                     'true'
  333.                 );
  334.             } else {
  335.                 $this->addFlash(
  336.                     'success_password_edit',
  337.                     'false'
  338.                 );
  339.             }
  340.         } else {
  341.             $this->addFlash(
  342.                 'success_password_edit',
  343.                 'false'
  344.             );
  345.         }
  346.         return $this->redirectToRoute('eleveur_profil');
  347.     }
  348.     /*====================================== Inseminateur ========================================*/
  349.     #[Route('/inseminateur/register'name'inseminateur_register'methods: ['GET''POST'])]
  350.     public function registerInseminateur(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasher): Response
  351.     {
  352.         $em $doctrine->getManager();
  353.         $user = new User();
  354.         $inseminateur = new Inseminateur();
  355.         $gouvernorats $doctrine->getRepository(DicGouvernorat::class)->findAll();
  356.         $qb $em->createQueryBuilder();
  357.         $query $qb->select('c')
  358.             ->from('App:DicCircuit''c')
  359.             ->orderBy('c.desCirLt''ASC');
  360.         $circuits $query->getQuery()->getResult();
  361.         $form $this->createForm(InseminateurType::class, $inseminateur);
  362.         $form->handleRequest($request);
  363.         //&& $form->isValid()
  364.         if ($form->isSubmitted() && $form->isValid()) {
  365.             if ($request->request->has('g-recaptcha-response')) {
  366.                 if ($request->request->get('g-recaptcha-response') != '') {
  367.                     $isExist $doctrine->getRepository(inseminateur::class)->findOneBy(['codIns' => $request->request->get('username')]);
  368.                     if ($isExist != null) {
  369.                         try {
  370.                             $isExistUser $doctrine->getRepository(User::class)->isExist($request->request->get('email'), $request->request->get('username'));
  371.                             $circuitId $request->request->get('circuitt');
  372.                             $dicCircuit $doctrine->getRepository(DicCircuit::class)->find($circuitId);
  373.                             if (count($isExistUser) == 0) {
  374.                                 $password $request->request->get('password');
  375.                                 if (!$this->isPasswordStrong($password)) {
  376.                                     $this->addFlash('pass_error''true');
  377.                                     return $this->redirectToRoute('inseminateur_register');
  378.                                 }
  379.                                 $user = new User();
  380.                                 $user->setEmail($request->request->get('email'));
  381.                                 $user->setPassword(
  382.                                     $passwordHasher->hashPassword(
  383.                                         $user,
  384.                                         $request->request->get('password')
  385.                                     )
  386.                                 );
  387.                                 $user->setRoles(["ROLE_INSEMINATEUR"]);
  388.                                 $user->setUsername($request->request->get('username'));
  389.                                 $user->setEtat(1);
  390.                                 $user->setCreatedAt(new \DateTime());
  391.                                 $em->persist($user);
  392.                                 $em->flush();
  393.                                 $isExist->setUser($user);
  394.                                 $isExist->setDicCircuit($isExist->getDicCircuit());
  395.                                 $isExist->setDicGouvernorat($isExist->getDicGouvernorat());
  396.                                 $isExist->setNprInsFr($inseminateur->getNprInsFr());
  397.                                 $isExist->setNprInsAr($inseminateur->getNprInsAr());
  398.                                 $isExist->setAdresse($inseminateur->getAdresse());
  399.                                 $isExist->setNumTel($inseminateur->getNumTel());
  400.                                 $isExist->setNumFax($isExist->getNumFax());
  401.                                 $isExist->setTypeIns($isExist->getTypeIns());
  402.                                 $isExist->setIdentIns($isExist->getIdentIns());
  403.                                 $isExist->setUpdatedAt(new \DateTime());
  404.                                 $em->persist($isExist);
  405.                                 $em->flush();
  406.                                 $this->addFlash('success''Votre inscription a été effectuée avec succès !');
  407.                                 return $this->redirectToRoute('login');
  408.                             } else {
  409.                                 $this->addFlash(
  410.                                     'failure_register_user_exist',
  411.                                     'true'
  412.                                 );
  413.                                 $user->setEmail($request->request->get('email'));
  414.                                 $user->setUsername($request->request->get('username'));
  415.                                 return $this->render('profil/register_inseminateur.html.twig', [
  416.                                     'controller_name' => 'ProfilController',
  417.                                     'inseminateur' => $inseminateur,
  418.                                     'circuit' => $circuits,
  419.                                     'user' => $user,
  420.                                     'form' => $form->createView(),
  421.                                 ]);
  422.                             }
  423.                         } catch (Exception $e) {
  424.                             return $this->redirectToRoute('inseminateur_register');
  425.                         }
  426.                     } else {
  427.                         $user->setEmail($request->request->get('email'));
  428.                         $user->setUsername($request->request->get('username'));
  429.                         $this->addFlash(
  430.                             'failure_register_no_ins',
  431.                             'true'
  432.                         );
  433.                         return $this->render('profil/register_inseminateur.html.twig', [
  434.                             'controller_name' => 'ProfilController',
  435.                             'inseminateur' => $inseminateur,
  436.                             'circuit' => $circuits,
  437.                             'user' => $user,
  438.                             'form' => $form->createView(),
  439.                         ]);
  440.                     } //end user exist
  441.                 //has captcha
  442.             //captcha is null
  443.             $user->setEmail($request->request->get('email'));
  444.             $user->setUsername($request->request->get('username'));
  445.             $this->addFlash(
  446.                 'failure_register',
  447.                 'true'
  448.             );
  449.             return $this->render('profil/register_inseminateur.html.twig', [
  450.                 'controller_name' => 'ProfilController',
  451.                 'inseminateur' => $inseminateur,
  452.                 'user' => $user,
  453.                 'circuit' => $circuits,
  454.                 'form' => $form->createView(),
  455.             ]);
  456.         } //end submit
  457.         $qb $em->createQueryBuilder();
  458.         $query $qb->select('c')
  459.             ->from('App:DicCircuit''c')
  460.             ->orderBy('c.desCirLt''ASC');
  461.         $circuits $query->getQuery()->getResult();
  462.         //dump($circuits);die;
  463.         return $this->render('profil/register_inseminateur.html.twig', [
  464.             'controller_name' => 'ProfilController',
  465.             'inseminateur' => $inseminateur,
  466.             'user' => $user,
  467.             'circuit' => $circuits,
  468.             'form' => $form->createView(),
  469.         ]);
  470.     }
  471.     /**
  472.      * @IsGranted("ROLE_INSEMINATEUR")
  473.      */
  474.     #[Route('/inseminateur/rest_password'name'inseminateur_reset_password'methods: ['GET''POST'])]
  475.     public function resetPasswordInseminateur(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasherMailerInterface $mailer): Response
  476.     {
  477.         $em $doctrine->getManager();
  478.         $user = new User();
  479.         $form $this->createForm(UserType::class, $user);
  480.         $form->handleRequest($request);
  481.         //&& $form->isValid()
  482.         if ($form->isSubmitted()) {
  483.             if ($request->request->has('g-recaptcha-response')) {
  484.                 if ($request->request->get('g-recaptcha-response') != '') {
  485.                     $userExist $doctrine->getRepository(User::class)->findOneBy(['email' => $user->getEmail()]);
  486.                     if ($userExist !== null) {
  487.                         try {
  488.                             $password = (string)(random_int(100000999999));
  489.                             $userExist->setPassword(
  490.                                 $passwordHasher->hashPassword(
  491.                                     $userExist,
  492.                                     $password
  493.                                 )
  494.                             );
  495.                             $em->persist($userExist);
  496.                             $em->flush();
  497.                             $to $user->getEmail();
  498.                             $sub '[OEP] Votre mot de passe';
  499.                             $msg '<p>Bonjour ' $user->getUsername() . ', <br/> Votre mot de passe est ' $password '.</p>';
  500.                             $globals = new Globals();
  501.                             $globals->sendEmail($mailer$to$sub$msg);
  502.                             return $this->redirectToRoute('login');
  503.                         } catch (Exception $e) {
  504.                             return $this->redirectToRoute('inseminateur_reset_password');
  505.                         }
  506.                     } else {
  507.                         $user->setEmail($user->getEmail());
  508.                         $this->addFlash(
  509.                             'failure_register',
  510.                             'true'
  511.                         );
  512.                         return $this->render('security/reset_password_inseminateur.html.twig', [
  513.                             'controller_name' => 'ProfilController',
  514.                             'user' => $user,
  515.                             'form' => $form->createView(),
  516.                         ]);
  517.                     } //end exist user
  518.                 }
  519.             }
  520.             $user->setEmail($user->getEmail());
  521.             $this->addFlash(
  522.                 'failure_recaptcha',
  523.                 'true'
  524.             );
  525.             return $this->render('security/reset_password_inseminateur.html.twig', [
  526.                 'controller_name' => 'ProfilController',
  527.                 'user' => $user,
  528.                 'form' => $form->createView(),
  529.             ]);
  530.         } //end submit
  531.         return $this->render('security/reset_password_inseminateur.html.twig', [
  532.             'controller_name' => 'ProfilController',
  533.             'user' => $user,
  534.             'form' => $form->createView(),
  535.         ]);
  536.     }
  537.     /**
  538.      * @IsGranted("ROLE_INSEMINATEUR")
  539.      */
  540.     #[Route('/inseminateur/profil'name'inseminateur_profil'methods: ['GET''POST'])]
  541.     public function profilInseminateur(Request $requestManagerRegistry $doctrine): Response
  542.     {
  543.         if ($this->isGranted('ROLE_INSEMINATEUR') == false) {
  544.             return $this->render('erreur/access_denied.html.twig', []);
  545.         }
  546.         $locale $request->getLocale();
  547.         $em $doctrine->getManager();
  548.         $user $this->getUser();
  549.         $inseminateur $doctrine->getRepository(Inseminateur::class)->findOneBy(['user' => $user]);
  550.         $gouvernorats $doctrine->getRepository(DicGouvernorat::class)->findAll();
  551.         $form $this->createForm(InseminateurType::class, $inseminateur, ['locale' => $locale]);
  552.         $form->handleRequest($request);
  553.         //&& $form->isValid()
  554.         if ($form->isSubmitted()) {
  555.             $inseminateur->setUpdatedAt(new \DateTime());
  556.             $em->persist($inseminateur);
  557.             $em->flush();
  558.             return $this->redirectToRoute('inseminateur_profil');
  559.         }
  560.         return $this->render('profil/profil_inseminateur.html.twig', [
  561.             'controller_name' => 'ProfilController',
  562.             'gouvernorats' => $gouvernorats,
  563.             'inseminateur' => $inseminateur,
  564.             'form' => $form->createView(),
  565.         ]);
  566.     }
  567.     /**
  568.      * @IsGranted("ROLE_INSEMINATEUR")
  569.      */
  570.     #[Route('/inseminateur/password/edit'name'inseminateur_edit_password'methods: ['GET''POST'])]
  571.     public function passwordInseminateur(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasher): Response
  572.     {
  573.         if ($this->isGranted('ROLE_INSEMINATEUR') == false) {
  574.             return $this->render('erreur/access_denied.html.twig', []);
  575.         }
  576.         $em $doctrine->getManager();
  577.         $user $this->getUser();
  578.         if ($passwordHasher->isPasswordValid($user$request->request->get('password'))) {
  579.             if ($request->request->get('newPassword') === $request->request->get('confirmPassword')) {
  580.                 $password $request->request->get('newPassword');
  581.                 if (!$this->isPasswordStrong($password)) {
  582.                     $this->addFlash('pass_error''true');
  583.                     return $this->redirectToRoute('inseminateur_profil');
  584.                 }
  585.                 $user->setPassword(
  586.                     $passwordHasher->hashPassword(
  587.                         $user,
  588.                         $request->request->get('newPassword')
  589.                     )
  590.                 );
  591.                 $user->setUpdatedAt(new \DateTime());
  592.                 $em->persist($user);
  593.                 $em->flush();
  594.                 $this->addFlash(
  595.                     'success_password_edit',
  596.                     'true'
  597.                 );
  598.             } else {
  599.                 $this->addFlash(
  600.                     'success_password_edit',
  601.                     'false'
  602.                 );
  603.             }
  604.         } else {
  605.             $this->addFlash(
  606.                 'success_password_edit',
  607.                 'false'
  608.             );
  609.         }
  610.         return $this->redirectToRoute('inseminateur_profil');
  611.     }
  612.     /*====================================== Agent Oep ========================================*/
  613.     /**
  614.      * @IsGranted("ROLE_ADMIN")
  615.      */
  616.     #[Route('/agentOEP/register'name'agent_oep_register'methods: ['GET''POST'])]
  617.     public function registerAgentOep(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasher): Response
  618.     {
  619.         $em $doctrine->getManager();
  620.         $user = new User();
  621.         $agent = new AgentOep();
  622.         $gouvernorats $doctrine->getRepository(DicGouvernorat::class)->findAll();
  623.         $delegations $doctrine->getRepository(DicDelegation::class)->findAll();
  624.         $imadas $doctrine->getRepository(DicImada::class)->findAll();
  625.         $form $this->createForm(AgentOepType::class, $agent);
  626.         $form->handleRequest($request);
  627.         //&& $form->isValid()
  628.         if ($form->isSubmitted()) {
  629.             if ($request->request->has('g-recaptcha-response')) {
  630.                 if ($request->request->get('g-recaptcha-response') != '') {
  631.                     $isExist $doctrine->getRepository(AgentOep::class)->findOneBy(['codAgent' => $request->request->get('username')]);
  632.                     if ($isExist != null) {
  633.                         try {
  634.                             $isExistUser $doctrine->getRepository(User::class)->isExist($request->request->get('email'), $request->request->get('username'));
  635.                             if (count($isExistUser) == 0) {
  636.                                 $user = new User();
  637.                                 $user->setEmail($request->request->get('email'));
  638.                                 $user->setPassword(
  639.                                     $passwordHasher->hashPassword(
  640.                                         $user,
  641.                                         $request->request->get('password')
  642.                                     )
  643.                                 );
  644.                                 $user->setRoles(["ROLE_AGENT_OEP"]);
  645.                                 $user->setUsername($request->request->get('username'));
  646.                                 $user->setEtat(1);
  647.                                 $user->setCreatedAt(new \DateTime());
  648.                                 $em->persist($user);
  649.                                 $em->flush();
  650.                                 $isExist->setUser($user);
  651.                                 $isExist->setImada($agent->getImada());
  652.                                 $isExist->setDelegation($agent->getDelegation());
  653.                                 $isExist->setGouvernorat($agent->getGouvernorat());
  654.                                 $isExist->setNprAgentFr($agent->getNprAgentFr());
  655.                                 $isExist->setNprAgentAr($agent->getNprAgentAr());
  656.                                 $isExist->setAdresse($agent->getAdresse());
  657.                                 $isExist->setNumTel($agent->getNumTel());
  658.                                 $isExist->setNumFax($agent->getNumFax());
  659.                                 $isExist->getTypeAgent($agent->getTypeAgent());
  660.                                 $isExist->setIdentAgent($agent->getIdentAgent());
  661.                                 $isExist->setUpdatedAt(new \DateTime());
  662.                                 $em->persist($isExist);
  663.                                 $em->flush();
  664.                                 return $this->redirectToRoute('login');
  665.                             } else {
  666.                                 $this->addFlash(
  667.                                     'failure_register_user_exist',
  668.                                     'true'
  669.                                 );
  670.                                 $user->setEmail($request->request->get('email'));
  671.                                 $user->setUsername($request->request->get('username'));
  672.                                 return $this->render('profil/register_agent_oep.html.twig', [
  673.                                     'controller_name' => 'ProfilController',
  674.                                     'gouvernorats' => $gouvernorats,
  675.                                     'delegations' => $delegations,
  676.                                     'imadas' => $imadas,
  677.                                     'agent' => $agent,
  678.                                     'user' => $user,
  679.                                     'form' => $form->createView(),
  680.                                 ]);
  681.                             }
  682.                         } catch (Exception $e) {
  683.                             return $this->redirectToRoute('agent_oep_register');
  684.                         }
  685.                     } else {
  686.                         $user->setEmail($request->request->get('email'));
  687.                         $user->setUsername($request->request->get('username'));
  688.                         $this->addFlash(
  689.                             'failure_register_no_agent',
  690.                             'true'
  691.                         );
  692.                         return $this->render('profil/register_agent_oep.html.twig', [
  693.                             'controller_name' => 'ProfilController',
  694.                             'gouvernorats' => $gouvernorats,
  695.                             'delegations' => $delegations,
  696.                             'imadas' => $imadas,
  697.                             'agent' => $agent,
  698.                             'user' => $user,
  699.                             'form' => $form->createView(),
  700.                         ]);
  701.                     } //end exist
  702.                 //has captcha
  703.             //captcha is null
  704.             $user->setEmail($request->request->get('email'));
  705.             $user->setUsername($request->request->get('username'));
  706.             $this->addFlash(
  707.                 'failure_register',
  708.                 'true'
  709.             );
  710.             return $this->render('profil/register_agent_oep.html.twig', [
  711.                 'controller_name' => 'ProfilController',
  712.                 'gouvernorats' => $gouvernorats,
  713.                 'delegations' => $delegations,
  714.                 'imadas' => $imadas,
  715.                 'agent' => $agent,
  716.                 'user' => $user,
  717.                 'form' => $form->createView(),
  718.             ]);
  719.         } //end submit
  720.         return $this->render('profil/register_agent_oep.html.twig', [
  721.             'controller_name' => 'ProfilController',
  722.             'gouvernorats' => $gouvernorats,
  723.             'delegations' => $delegations,
  724.             'imadas' => $imadas,
  725.             'agent' => $agent,
  726.             'user' => $user,
  727.             'form' => $form->createView(),
  728.         ]);
  729.     }
  730.     #[Route('/agentOEP/rest_password'name'agent_oep_reset_password'methods: ['GET''POST'])]
  731.     public function resetPasswordAgentOEP(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasherMailerInterface $mailer): Response
  732.     {
  733.         $em $doctrine->getManager();
  734.         $user = new User();
  735.         $form $this->createForm(UserType::class, $user);
  736.         $form->handleRequest($request);
  737.         //&& $form->isValid()
  738.         if ($form->isSubmitted()) {
  739.             if ($request->request->has('g-recaptcha-response')) {
  740.                 if ($request->request->get('g-recaptcha-response') != '') {
  741.                     $userExist $doctrine->getRepository(User::class)->findOneBy(['email' => $user->getEmail()]);
  742.                     if ($userExist !== null) {
  743.                         try {
  744.                             $password = (string)(random_int(100000999999));
  745.                             $userExist->setPassword(
  746.                                 $passwordHasher->hashPassword(
  747.                                     $userExist,
  748.                                     $password
  749.                                 )
  750.                             );
  751.                             $em->persist($userExist);
  752.                             $em->flush();
  753.                             $to $user->getEmail();
  754.                             $sub '[OEP] Votre mot de passe';
  755.                             $msg '<p>Bonjour ' $user->getUsername() . ', <br/> Votre mot de passe est ' $password '.</p>';
  756.                             $globals = new Globals();
  757.                             $globals->sendEmail($mailer$to$sub$msg);
  758.                             return $this->redirectToRoute('login');
  759.                         } catch (Exception $e) {
  760.                             return $this->redirectToRoute('agent_oep_reset_password');
  761.                         }
  762.                     } else {
  763.                         $user->setEmail($user->getEmail());
  764.                         $this->addFlash(
  765.                             'failure_register',
  766.                             'true'
  767.                         );
  768.                         return $this->render('security/reset_password_agent_oep.html.twig', [
  769.                             'controller_name' => 'ProfilController',
  770.                             'user' => $user,
  771.                             'form' => $form->createView(),
  772.                         ]);
  773.                     } //end exist user
  774.                 }
  775.             }
  776.             $user->setEmail($user->getEmail());
  777.             $this->addFlash(
  778.                 'failure_recaptcha',
  779.                 'true'
  780.             );
  781.             return $this->render('security/reset_password_agent_oep.html.twig', [
  782.                 'controller_name' => 'ProfilController',
  783.                 'user' => $user,
  784.                 'form' => $form->createView(),
  785.             ]);
  786.         } //end submit
  787.         return $this->render('security/reset_password_agent_oep.html.twig', [
  788.             'controller_name' => 'ProfilController',
  789.             'user' => $user,
  790.             'form' => $form->createView(),
  791.         ]);
  792.     }
  793.     /**
  794.      * @IsGranted("ROLE_AGENT_OEP")
  795.      */
  796.     #[Route('/agentOEP/profil'name'agent_oep_profil'methods: ['GET''POST'])]
  797.     public function profilAgentOep(Request $requestManagerRegistry $doctrine): Response
  798.     {
  799.         if ($this->isGranted('ROLE_AGENT_OEP') == false) {
  800.             return $this->render('erreur/access_denied.html.twig', []);
  801.         }
  802.         $em $doctrine->getManager();
  803.         $user $this->getUser();
  804.         $agent $doctrine->getRepository(AgentOep::class)->findOneBy(['user' => $user]);
  805.         $gouvernorats $doctrine->getRepository(DicGouvernorat::class)->findAll();
  806.         $delegations $doctrine->getRepository(DicDelegation::class)->findBy(['gouvernorat' => $agent->getGouvernorat()]);
  807.         $imadas $doctrine->getRepository(DicImada::class)->findBy(['delegation' => $agent->getDelegation()]);
  808.         $form $this->createForm(AgentOepType::class, $agent);
  809.         $form->handleRequest($request);
  810.         //&& $form->isValid()
  811.         if ($form->isSubmitted()) {
  812.             $agent->setUpdatedAt(new \DateTime());
  813.             $em->persist($agent);
  814.             $em->flush();
  815.             return $this->redirectToRoute('agent_oep_profil');
  816.         }
  817.         return $this->render('profil/profil_agent_oep.html.twig', [
  818.             'controller_name' => 'ProfilController',
  819.             'gouvernorats' => $gouvernorats,
  820.             'delegations' => $delegations,
  821.             'imadas' => $imadas,
  822.             'agent' => $agent,
  823.             'form' => $form->createView(),
  824.         ]);
  825.     }
  826.     /**
  827.      * @IsGranted("ROLE_AGENT_OEP")
  828.      */
  829.     #[Route('/agentOEP/password/edit'name'agent_oep_edit_password'methods: ['GET''POST'])]
  830.     public function passwordAgentOep(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasher): Response
  831.     {
  832.         if ($this->isGranted('ROLE_AGENT_OEP') == false) {
  833.             return $this->render('erreur/access_denied.html.twig', []);
  834.         }
  835.         $em $doctrine->getManager();
  836.         $user $this->getUser();
  837.         if ($passwordHasher->isPasswordValid($user$request->request->get('password'))) {
  838.             if ($request->request->get('newPassword') === $request->request->get('confirmPassword')) {
  839.                 $password $request->request->get('newPassword');
  840.                 if (!$this->isPasswordStrong($password)) {
  841.                     $this->addFlash('pass_error''true');
  842.                     return $this->redirectToRoute('agent_oep_profil');
  843.                 }
  844.                 $user->setPassword(
  845.                     $passwordHasher->hashPassword(
  846.                         $user,
  847.                         $request->request->get('newPassword')
  848.                     )
  849.                 );
  850.                 $user->setUpdatedAt(new \DateTime());
  851.                 $em->persist($user);
  852.                 $em->flush();
  853.                 $this->addFlash(
  854.                     'success_password_edit',
  855.                     'true'
  856.                 );
  857.             } else {
  858.                 $this->addFlash(
  859.                     'success_password_edit',
  860.                     'false'
  861.                 );
  862.             }
  863.         } else {
  864.             $this->addFlash(
  865.                 'success_password_edit',
  866.                 'false'
  867.             );
  868.         }
  869.         return $this->redirectToRoute('agent_oep_profil');
  870.     }
  871.     /*====================================== Agent ========================================*/
  872.     #[Route('/agent/register'name'agent_register'methods: ['GET''POST'])]
  873.     public function registerAgent(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasher): Response
  874.     {
  875.         $em $doctrine->getManager();
  876.         $user = new User();
  877.         $agent = new Agent();
  878.         $gouvernorats $doctrine->getRepository(DicGouvernorat::class)->findAll();
  879.         $delegations $doctrine->getRepository(DicDelegation::class)->findAll();
  880.         $imadas $doctrine->getRepository(DicImada::class)->findAll();
  881.         $form $this->createForm(AgentType::class, $agent);
  882.         $form->handleRequest($request);
  883.         //&& $form->isValid()
  884.         if ($form->isSubmitted() && $form->isValid()) {
  885.             if ($request->request->has('g-recaptcha-response')) {
  886.                 if ($request->request->get('g-recaptcha-response') != '') {
  887.                     $isExist $doctrine->getRepository(Agent::class)->findOneBy(['codAgent' => $request->request->get('username')]);
  888.                     if ($isExist != null) {
  889.                         try {
  890.                             $isExistUser $doctrine->getRepository(User::class)->isExist($request->request->get('email'), $request->request->get('username'));
  891.                             if (count($isExistUser) == 0) {
  892.                                 $password $request->request->get('password');
  893.                                 if (!$this->isPasswordStrong($password)) {
  894.                                     $this->addFlash('pass_error''true');
  895.                                     return $this->redirectToRoute('inseminateur_register');
  896.                                 }
  897.                                 $user = new User();
  898.                                 $user->setEmail($request->request->get('email'));
  899.                                 $user->setPassword(
  900.                                     $passwordHasher->hashPassword(
  901.                                         $user,
  902.                                         $request->request->get('password')
  903.                                     )
  904.                                 );
  905.                                 $user->setRoles(["ROLE_AGENT"]);
  906.                                 $user->setUsername($request->request->get('username'));
  907.                                 $user->setEtat(1);
  908.                                 $user->setCreatedAt(new \DateTime());
  909.                                 //dump($agent,$user);die;
  910.                                 $em->persist($user);
  911.                                 $em->flush();
  912.                                 $isExist->setUser($user);
  913.                                 $isExist->setImada($agent->getImada());
  914.                                 $isExist->setDelegation($agent->getDelegation());
  915.                                 $isExist->setGouvernorat($agent->getGouvernorat());
  916.                                 $isExist->setNprAgentFr($agent->getNprAgentFr());
  917.                                 $isExist->setNprAgentAr($agent->getNprAgentAr());
  918.                                 $isExist->setAdresse($agent->getAdresse());
  919.                                 $isExist->setNumTel($agent->getNumTel());
  920.                                 $isExist->setNumFax($agent->getNumFax());
  921.                                 $isExist->getTypeAgent($agent->getTypeAgent());
  922.                                 $isExist->setIdentAgent($agent->getIdentAgent());
  923.                                 $isExist->setUpdatedAt(new \DateTime());
  924.                                 $em->persist($isExist);
  925.                                 $em->flush();
  926.                                 $this->addFlash('success''Votre inscription a été effectuée avec succès !');
  927.                                 return $this->redirectToRoute('login');
  928.                             } else {
  929.                                 $this->addFlash(
  930.                                     'failure_register_user_exist',
  931.                                     'true'
  932.                                 );
  933.                                 $user->setEmail($request->request->get('email'));
  934.                                 $user->setUsername($request->request->get('username'));
  935.                                 return $this->render('profil/register_agent.html.twig', [
  936.                                     'controller_name' => 'ProfilController',
  937.                                     'gouvernorats' => $gouvernorats,
  938.                                     'delegations' => $delegations,
  939.                                     'imadas' => $imadas,
  940.                                     'agent' => $agent,
  941.                                     'user' => $user,
  942.                                     'form' => $form->createView(),
  943.                                 ]);
  944.                             }
  945.                         } catch (Exception $e) {
  946.                             return $this->redirectToRoute('agent_register');
  947.                         }
  948.                     } else {
  949.                         $user->setEmail($request->request->get('email'));
  950.                         $user->setUsername($request->request->get('username'));
  951.                         $this->addFlash(
  952.                             'failure_register_no_agent',
  953.                             'true'
  954.                         );
  955.                         return $this->render('profil/register_agent.html.twig', [
  956.                             'controller_name' => 'ProfilController',
  957.                             'gouvernorats' => $gouvernorats,
  958.                             'delegations' => $delegations,
  959.                             'imadas' => $imadas,
  960.                             'agent' => $agent,
  961.                             'user' => $user,
  962.                             'form' => $form->createView(),
  963.                         ]);
  964.                     } //end exist
  965.                 //has captcha
  966.             //captcha is null
  967.             $user->setEmail($request->request->get('email'));
  968.             $user->setUsername($request->request->get('username'));
  969.             $this->addFlash(
  970.                 'failure_register',
  971.                 'true'
  972.             );
  973.             return $this->render('profil/register_agent.html.twig', [
  974.                 'controller_name' => 'ProfilController',
  975.                 'gouvernorats' => $gouvernorats,
  976.                 'delegations' => $delegations,
  977.                 'imadas' => $imadas,
  978.                 'agent' => $agent,
  979.                 'user' => $user,
  980.                 'form' => $form->createView(),
  981.             ]);
  982.         } //end submit
  983.         return $this->render('profil/register_agent.html.twig', [
  984.             'controller_name' => 'ProfilController',
  985.             'gouvernorats' => $gouvernorats,
  986.             'delegations' => $delegations,
  987.             'imadas' => $imadas,
  988.             'agent' => $agent,
  989.             'user' => $user,
  990.             'form' => $form->createView(),
  991.         ]);
  992.     }
  993.     #[Route('/agent/rest_password'name'agent_reset_password'methods: ['GET''POST'])]
  994.     public function resetPasswordAgent(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasherMailerInterface $mailer): Response
  995.     {
  996.         $em $doctrine->getManager();
  997.         $user = new User();
  998.         $form $this->createForm(UserType::class, $user);
  999.         $form->handleRequest($request);
  1000.         //&& $form->isValid()
  1001.         if ($form->isSubmitted()) {
  1002.             if ($request->request->has('g-recaptcha-response')) {
  1003.                 if ($request->request->get('g-recaptcha-response') != '') {
  1004.                     $userExist $doctrine->getRepository(User::class)->findOneBy(['email' => $user->getEmail()]);
  1005.                     if ($userExist !== null) {
  1006.                         try {
  1007.                             $password = (string)(random_int(100000999999));
  1008.                             $userExist->setPassword(
  1009.                                 $passwordHasher->hashPassword(
  1010.                                     $userExist,
  1011.                                     $password
  1012.                                 )
  1013.                             );
  1014.                             $em->persist($userExist);
  1015.                             $em->flush();
  1016.                             $to $user->getEmail();
  1017.                             $sub '[OEP] Votre mot de passe';
  1018.                             $msg '<p>Bonjour ' $user->getUsername() . ', <br/> Votre mot de passe est ' $password '.</p>';
  1019.                             $globals = new Globals();
  1020.                             $globals->sendEmail($mailer$to$sub$msg);
  1021.                             return $this->redirectToRoute('login');
  1022.                         } catch (Exception $e) {
  1023.                             return $this->redirectToRoute('agent_reset_password');
  1024.                         }
  1025.                     } else {
  1026.                         $user->setEmail($user->getEmail());
  1027.                         $this->addFlash(
  1028.                             'failure_register',
  1029.                             'true'
  1030.                         );
  1031.                         return $this->render('security/reset_password_agent.html.twig', [
  1032.                             'controller_name' => 'ProfilController',
  1033.                             'user' => $user,
  1034.                             'form' => $form->createView(),
  1035.                         ]);
  1036.                     } //end exist user
  1037.                 }
  1038.             }
  1039.             $user->setEmail($user->getEmail());
  1040.             $this->addFlash(
  1041.                 'failure_recaptcha',
  1042.                 'true'
  1043.             );
  1044.             return $this->render('security/reset_password_agent.html.twig', [
  1045.                 'controller_name' => 'ProfilController',
  1046.                 'user' => $user,
  1047.                 'form' => $form->createView(),
  1048.             ]);
  1049.         } //end submit
  1050.         return $this->render('security/reset_password_agent.html.twig', [
  1051.             'controller_name' => 'ProfilController',
  1052.             'user' => $user,
  1053.             'form' => $form->createView(),
  1054.         ]);
  1055.     }
  1056.     /**
  1057.      * @IsGranted("ROLE_AGENT")
  1058.      */
  1059.     #[Route('/agent/profil'name'agent_profil'methods: ['GET''POST'])]
  1060.     public function profilAgent(Request $requestManagerRegistry $doctrine): Response
  1061.     {
  1062.         if ($this->isGranted('ROLE_AGENT') == false) {
  1063.             return $this->render('erreur/access_denied.html.twig', []);
  1064.         }
  1065.         $em $doctrine->getManager();
  1066.         $user $this->getUser();
  1067.         $agent $doctrine->getRepository(Agent::class)->findOneBy(['user' => $user]);
  1068.         $gouvernorats $doctrine->getRepository(DicGouvernorat::class)->findAll();
  1069.         $delegations $doctrine->getRepository(DicDelegation::class)->findBy(['gouvernorat' => $agent->getGouvernorat()]);
  1070.         $imadas $doctrine->getRepository(DicImada::class)->findBy(['delegation' => $agent->getDelegation()]);
  1071.         $form $this->createForm(AgentType::class, $agent);
  1072.         $form->handleRequest($request);
  1073.         //&& $form->isValid()
  1074.         if ($form->isSubmitted()) {
  1075.             $agent->setUpdatedAt(new \DateTime());
  1076.             $em->persist($agent);
  1077.             $em->flush();
  1078.             return $this->redirectToRoute('agent_profil');
  1079.         }
  1080.         return $this->render('profil/profil_agent.html.twig', [
  1081.             'controller_name' => 'ProfilController',
  1082.             'gouvernorats' => $gouvernorats,
  1083.             'delegations' => $delegations,
  1084.             'imadas' => $imadas,
  1085.             'agent' => $agent,
  1086.             'form' => $form->createView(),
  1087.         ]);
  1088.     }
  1089.     /**
  1090.      * @IsGranted("ROLE_AGENT")
  1091.      */
  1092.     #[Route('/agent/password/edit'name'agent_edit_password'methods: ['GET''POST'])]
  1093.     public function passwordAgent(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasher): Response
  1094.     {
  1095.         if ($this->isGranted('ROLE_AGENT') == false) {
  1096.             return $this->render('erreur/access_denied.html.twig', []);
  1097.         }
  1098.         $em $doctrine->getManager();
  1099.         $user $this->getUser();
  1100.         if ($passwordHasher->isPasswordValid($user$request->request->get('password'))) {
  1101.             if ($request->request->get('newPassword') === $request->request->get('confirmPassword')) {
  1102.                 $password $request->request->get('newPassword');
  1103.                 if (!$this->isPasswordStrong($password)) {
  1104.                     $this->addFlash('pass_error''true');
  1105.                     return $this->redirectToRoute('agent_profil');
  1106.                 }
  1107.                 $user->setPassword(
  1108.                     $passwordHasher->hashPassword(
  1109.                         $user,
  1110.                         $request->request->get('newPassword')
  1111.                     )
  1112.                 );
  1113.                 $user->setUpdatedAt(new \DateTime());
  1114.                 $em->persist($user);
  1115.                 $em->flush();
  1116.                 $this->addFlash(
  1117.                     'success_password_edit',
  1118.                     'true'
  1119.                 );
  1120.             } else {
  1121.                 $this->addFlash(
  1122.                     'success_password_edit',
  1123.                     'false'
  1124.                 );
  1125.             }
  1126.         } else {
  1127.             $this->addFlash(
  1128.                 'success_password_edit',
  1129.                 'false'
  1130.             );
  1131.         }
  1132.         return $this->redirectToRoute('agent_profil');
  1133.     }
  1134.     /*====================================== Admin ========================================*/
  1135.     /**
  1136.      * @IsGranted("ROLE_ADMIN")
  1137.      */
  1138.     #[Route('/admin/password/edit'name'admin_edit_password'methods: ['GET''POST'])]
  1139.     public function passwordAdmin(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasher): Response
  1140.     {
  1141.         if ($this->isGranted('ROLE_ADMIN') == false) {
  1142.             return $this->render('erreur/access_denied.html.twig', []);
  1143.         }
  1144.         $em $doctrine->getManager();
  1145.         $user $this->getUser();
  1146.         if ($passwordHasher->isPasswordValid($user$request->request->get('password'))) {
  1147.             if ($request->request->get('newPassword') === $request->request->get('confirmPassword')) {
  1148.                 $password $request->request->get('newPassword');
  1149.                 if (!$this->isPasswordStrong($password)) {
  1150.                     $this->addFlash('pass_error''true');
  1151.                     return $this->redirectToRoute('admin_user_admin_add');
  1152.                 }
  1153.                 $user->setPassword(
  1154.                     $passwordHasher->hashPassword(
  1155.                         $user,
  1156.                         $request->request->get('newPassword')
  1157.                     )
  1158.                 );
  1159.                 $user->setUpdatedAt(new \DateTime());
  1160.                 $em->persist($user);
  1161.                 $em->flush();
  1162.                 $this->addFlash(
  1163.                     'success_password_edit',
  1164.                     'true'
  1165.                 );
  1166.             } else {
  1167.                 $this->addFlash(
  1168.                     'success_password_edit',
  1169.                     'false'
  1170.                 );
  1171.             }
  1172.         } else {
  1173.             $this->addFlash(
  1174.                 'success_password_edit',
  1175.                 'false'
  1176.             );
  1177.         }
  1178.         return $this->redirectToRoute('admin_dashboard');
  1179.     }
  1180.     /**************************consultation********************************** */
  1181.     /**
  1182.      * @IsGranted("ROLE_CONSULTATION")
  1183.      */
  1184.     #[Route('/consultation/password/edit'name'consultation_edit_password'methods: ['GET''POST'])]
  1185.     public function passwordConsultation(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasher): Response
  1186.     {
  1187.         if ($this->isGranted('ROLE_CONSULTATION') == false) {
  1188.             return $this->render('erreur/access_denied.html.twig', []);
  1189.         }
  1190.         $em $doctrine->getManager();
  1191.         $user $this->getUser();
  1192.         if ($passwordHasher->isPasswordValid($user$request->request->get('password'))) {
  1193.             if ($request->request->get('newPassword') === $request->request->get('confirmPassword')) {
  1194.                 $password $request->request->get('newPassword');
  1195.                 if (!$this->isPasswordStrong($password)) {
  1196.                     $this->addFlash('pass_error''true');
  1197.                     return $this->redirectToRoute('app_consultation');
  1198.                 }
  1199.                 $user->setPassword(
  1200.                     $passwordHasher->hashPassword(
  1201.                         $user,
  1202.                         $request->request->get('newPassword')
  1203.                     )
  1204.                 );
  1205.                 $user->setUpdatedAt(new \DateTime());
  1206.                 $em->persist($user);
  1207.                 $em->flush();
  1208.                 $this->addFlash(
  1209.                     'success_password_edit',
  1210.                     'true'
  1211.                 );
  1212.             } else {
  1213.                 $this->addFlash(
  1214.                     'success_password_edit',
  1215.                     'false'
  1216.                 );
  1217.             }
  1218.         } else {
  1219.             $this->addFlash(
  1220.                 'success_password_edit',
  1221.                 'false'
  1222.             );
  1223.         }
  1224.         return $this->redirectToRoute('app_consultation');
  1225.     }
  1226.     /**************************partenaire********************************* */
  1227.     /**
  1228.      * @IsGranted("ROLE_PARTENAIRE")
  1229.      */
  1230.     #[Route('/partenaire/password/edit'name'partenaire_edit_password'methods: ['GET''POST'])]
  1231.     public function passwordPartenaire(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasher): Response
  1232.     {
  1233.         if ($this->isGranted('ROLE_PARTENAIRE') == false) {
  1234.             return $this->render('erreur/access_denied.html.twig', []);
  1235.         }
  1236.         $em $doctrine->getManager();
  1237.         $user $this->getUser();
  1238.         if ($passwordHasher->isPasswordValid($user$request->request->get('password'))) {
  1239.             if ($request->request->get('newPassword') === $request->request->get('confirmPassword')) {
  1240.                 $password $request->request->get('newPassword');
  1241.                 if (!$this->isPasswordStrong($password)) {
  1242.                     $this->addFlash('pass_error''true');
  1243.                     return $this->redirectToRoute('app_partenaire');
  1244.                 }
  1245.                 $user->setPassword(
  1246.                     $passwordHasher->hashPassword(
  1247.                         $user,
  1248.                         $request->request->get('newPassword')
  1249.                     )
  1250.                 );
  1251.                 $user->setUpdatedAt(new \DateTime());
  1252.                 $em->persist($user);
  1253.                 $em->flush();
  1254.                 $this->addFlash(
  1255.                     'success_password_edit',
  1256.                     'true'
  1257.                 );
  1258.             } else {
  1259.                 $this->addFlash(
  1260.                     'success_password_edit',
  1261.                     'false'
  1262.                 );
  1263.             }
  1264.         } else {
  1265.             $this->addFlash(
  1266.                 'success_password_edit',
  1267.                 'false'
  1268.             );
  1269.         }
  1270.         return $this->redirectToRoute('app_partenaire');
  1271.     }
  1272.     /***********************User************************************/
  1273.     #[Route('/rest_password'name'reset_password'methods: ['GET''POST'])]
  1274.     public function resetPasswordUser(Request $requestManagerRegistry $doctrineUserPasswordHasherInterface $passwordHasherMailerInterface $mailer): Response
  1275.     {
  1276.         $em $doctrine->getManager();
  1277.         $user = new User();
  1278.         $form $this->createForm(UserType::class, $user);
  1279.         $form->handleRequest($request);
  1280.         //&& $form->isValid()
  1281.         if ($form->isSubmitted()) {
  1282.             if ($request->request->has('g-recaptcha-response')) {
  1283.                 if ($request->request->get('g-recaptcha-response') != '') {
  1284.                     $userExist $doctrine->getRepository(User::class)->findOneBy(['email' => $user->getEmail()]);
  1285.                     if ($userExist !== null) {
  1286.                         try {
  1287.                             $password = (string)(random_int(100000999999));
  1288.                             $userExist->setPassword(
  1289.                                 $passwordHasher->hashPassword(
  1290.                                     $userExist,
  1291.                                     $password
  1292.                                 )
  1293.                             );
  1294.                             $em->persist($userExist);
  1295.                             $em->flush();
  1296.                             $to $user->getEmail();
  1297.                            // dump($to);die;
  1298.                             //$to='ryahyaoui@progress.tn';
  1299.                             $sub '[OEP] Votre mot de passe';
  1300.                             $msg '<p>Bonjour ' $user->getUsername() . ', <br/> Votre mot de passe est ' $password '.</p>';
  1301.                             $globals = new Globals();
  1302.                             $globals->sendEmail($mailer$to$sub$msg);
  1303.                             return $this->redirectToRoute('login');
  1304.                         } catch (\Exception $e) {
  1305.                             return $this->redirectToRoute('reset_password');
  1306.                         }
  1307.                     } else {
  1308.                         $user->setEmail($user->getEmail());
  1309.                         $this->addFlash(
  1310.                             'failure_register',
  1311.                             'true'
  1312.                         );
  1313.                         return $this->render('security/reset_password_user.html.twig', [
  1314.                             'controller_name' => 'ProfilController',
  1315.                             'user' => $user,
  1316.                             'form' => $form->createView(),
  1317.                         ]);
  1318.                     } //end user exist
  1319.                 }
  1320.             }
  1321.             $user->setEmail($user->getEmail());
  1322.             $this->addFlash(
  1323.                 'failure_recaptcha',
  1324.                 'true'
  1325.             );
  1326.             return $this->render('security/reset_password_user.html.twig', [
  1327.                 'controller_name' => 'ProfilController',
  1328.                 'user' => $user,
  1329.                 'form' => $form->createView(),
  1330.             ]);
  1331.         } //end submit
  1332.         return $this->render('security/reset_password_user.html.twig', [
  1333.             'controller_name' => 'ProfilController',
  1334.             'user' => $user,
  1335.             'form' => $form->createView(),
  1336.         ]);
  1337.     }
  1338.     #[Route('/reset_password2'name'reset_password2'methods: ['GET''POST'])]
  1339. public function resetPasswordUser2(Request $requestManagerRegistry $doctrineMailerInterface $mailer,TokenGeneratorInterface $tokenGenerator): Response
  1340. {
  1341.     $em $doctrine->getManager();
  1342.     $user = new User();
  1343.     $form $this->createForm(UserType::class, $user);
  1344.     $form->handleRequest($request);
  1345.     if ($form->isSubmitted()) {
  1346.         $email $form->get('email')->getData();
  1347.         $user $doctrine->getRepository(User::class)->findOneBy(['email' => $email]);
  1348.         if ($user) {
  1349.            
  1350.            
  1351.             // Générer un token sécurisé
  1352.             $token $tokenGenerator->generateToken();
  1353.             // Envoyer l'email de réinitialisation
  1354.             $resetUrl $this->generateUrl('reset_password_confirm', ['token' => $token], UrlGeneratorInterface::ABSOLUTE_URL);
  1355.             $subject 'Réinitialisation de votre mot de passe';
  1356.             $message "<p>Bonjour, cliquez sur le lien suivant pour réinitialiser votre mot de passe : <a href='.$resetUrl.'>.$resetUrl.</a></p>";
  1357.            
  1358.             $globals = new Globals();
  1359.             $globals->sendEmail($mailer$email$subject$message);           
  1360.             $this->addFlash('success''Un e-mail de réinitialisation vous a été envoyé.');
  1361.             return $this->redirectToRoute('login');
  1362.         } else {
  1363.             $this->addFlash('failure_register''Aucun compte associé à cet email.');
  1364.         }
  1365.     }
  1366.     return $this->render('security/reset_password_user.html.twig', [
  1367.         'form' => $form->createView(),
  1368.     ]);
  1369. }
  1370. }