src/Controller/MembreController.php line 1456

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\Routing\Annotation\Route;
  6. use App\Entity\Membre;
  7. use App\Entity\Personne;
  8. use App\Entity\Demande;
  9. use App\Entity\Province;
  10. use App\Entity\Cotisation;
  11. use App\Entity\User;
  12. use App\Entity\Federation;
  13. use App\Entity\Transaction;
  14. use App\Form\MembreType;
  15. use App\Form\MembrePasswordType;
  16. use App\Form\MembreTypeUpdate;
  17. use App\Form\DemandeType;
  18. use App\Form\MembreInscriptionType;
  19. use App\Form\MembrePhotoType;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  22. use Knp\Snappy\Pdf;
  23. use Knp\Bundle\SnappyBundle\KnpSnappyBundle\Response\PdfResponse;
  24. use Symfony\Component\HttpFoundation\File\File;
  25. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  26. use Twilio\Rest\Client;
  27. use Endroid\QrCode\Color\Color;
  28. use Endroid\QrCode\Encoding\Encoding;
  29. use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelLow;
  30. use Endroid\QrCode\QrCode;
  31. use Endroid\QrCode\Label\Label;
  32. use Endroid\QrCode\Logo\Logo;
  33. use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
  34. use Endroid\QrCode\Writer\PngWriter;
  35. class MembreController extends AbstractController
  36. {
  37.     /**
  38.      * @Route("/admin/membre", name="membre_list")
  39.      */
  40.     public function index(): Response
  41.     {
  42.         
  43.         
  44.         $province = new Province();
  45.         $user = new User();
  46.         $user $this->getUser();
  47.         $province $user->getProvince();
  48.         $membres = new Membre();
  49.         $recherche " ";
  50.         $em $this->getDoctrine()->getManager();
  51.         if (isset($_POST['recherche'])){
  52.             $recherche =  $_POST['recherche'];
  53.             $federations $em->getRepository(Federation::class)->findBy(["province" => $province]);
  54.   
  55.          
  56.             if ($this->isGranted('ROLE_ADMIN')){
  57.     
  58.                 $membres $em->getRepository(Membre::class)->search($recherche);
  59.     
  60.             }elseif (in_array('ROLE_ADMIN_INTFEDERAL'$user->getRoles())){
  61.     
  62.                 $membres $em->getRepository(Membre::class)->searchProvince($recherche$federations);
  63.     
  64.             }elseif (in_array('ROLE_ADMIN_FEDERAL'$user->getRoles())){
  65.                 $federation $user->getFederation();
  66.     
  67.                 $membres $em->getRepository(Membre::class)->searchFederation($recherche$federation);
  68.           
  69.     
  70.             }
  71.          
  72.             
  73.         }
  74.         
  75.     
  76.     
  77.         return $this->render('membre/index.html.twig', ['membres' => $membres'recherche' => $recherche]);
  78.     }
  79.     /**
  80.      * @Route("/admin/federation/membre/{idFed}", name="membre_list_federation")
  81.      */
  82.     public function membreFederation($idFed): Response
  83.     {
  84.         $membres = new Membre();
  85.         $federation = new Federation();
  86.         $em $this->getDoctrine()->getManager();
  87.         $federation $em->getRepository(Federation::class)->find($idFed);
  88.         $membresnb $em->getRepository(Membre::class)->findBy(["federation" => $federation]);
  89.         $nbMembre count($membresnb);
  90.         $province $federation->getProvince();
  91.         $federations $em->getRepository(Federation::class)->findBy(["province" => $province]);
  92.         $recherche " ";
  93.         
  94.         if(isset($_POST['recherche'])){
  95.             $recherche $_POST['recherche'];
  96.     
  97.             $membres $em->getRepository(Membre::class)->searchFederation($recherche$federation);
  98.           
  99.     
  100.             }else{
  101.                 $membres $em->getRepository(Membre::class)->findBy(["federation" => $federation], ["id" => "DESC"], 10000);
  102.             }
  103.          
  104.             
  105.         
  106.         return $this->render('membre/federation.html.twig', ['membres' => $membres'federation' => $federation'federations' => $federations'recherche' => $recherche"nombre" => $nbMembre]);
  107.     }
  108.     /**
  109.      * @Route("/admin/list/carte/{idFed}", name="carte_list_global")
  110.      */
  111.     public function membreCarte($idFed): Response
  112.     {
  113.         $membres = new Membre();
  114.         $federation = new Federation();
  115.         $em $this->getDoctrine()->getManager();
  116.         $federation $em->getRepository(Federation::class)->find($idFed);
  117.         $federations $em->getRepository(Federation::class)->findAll();
  118.         $membres $em->getRepository(Membre::class)->findBy(["carte" => true] );
  119.         return $this->render('federation/carte-list.html.twig', ['membres' => $membres'federation' => $federation'federations' => $federations]);
  120.     }
  121.     /**
  122.      * @Route("/admin/federation/demande/{idFed}", name="demande_list_federation")
  123.      */
  124.     public function demandeFederation($idFed): Response
  125.     {
  126.         $demandes = new Membre();
  127.         $federation = new Federation();
  128.         $em $this->getDoctrine()->getManager();
  129.         $federation $em->getRepository(Federation::class)->find($idFed);
  130.         $demandes $em->getRepository(Demande::class)->findBy(["federation" => $federation"etat" => null] );
  131.         return $this->render('membre/demande-federation.html.twig', ['demandes' => $demandes'federation' => $federation]);
  132.     }
  133.     /**
  134.      * @Route("/admin/membre/add/", name="membre_add")
  135.      */
  136.     public function Add(Request $request)
  137.     {
  138.        
  139.         $membre = new Membre();
  140.         $federation = new Federation();
  141.         $em $this->getDoctrine()->getManager();
  142.   
  143.         $form $this->get('form.factory')->create(MembreType::class, $membre);
  144.         if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
  145.             
  146.             $userForm $form->get('user')->getData();
  147.             $personne $userForm->getPersonne();
  148.             
  149.             $email $personne->getNom() . $personne->getPrenom() . '@mlc.cd';
  150.             $email str_replace(' ','',$email);
  151.             
  152.             $checkMail false;
  153.             $i 1;
  154.             while ($checkMail == false){
  155.             $test $em->getRepository(User::class)->findBy(["email" => $email]);
  156.             
  157.             if ($test != null){
  158.                
  159.                 $email $personne->getNom() . $personne->getPrenom() . $nb '@mlc.cd';
  160.                 $i++;
  161.             }else{
  162.                 $checkMail true;
  163.             }
  164.             }
  165.             $email str_replace(' ','',$email);
  166.             $userForm->setEmail($email); 
  167.             $userForm->setRoles(['ROLE_USER']);
  168.             $userForm->setPassword($this->passwordEncoder->encodePassword($userForm'test'));
  169.             $em->persist($membre);
  170.             $em->flush();
  171.           
  172.             return $this->redirectToRoute('membre_list');
  173.               
  174.         }
  175.         return $this->render('membre/add.html.twig', [
  176.       
  177.             'form' => $form->createView() ]);
  178.     }
  179.     /**
  180.      * @Route("/admin/membre/addfed/{idFed}", name="membre_add_fed")
  181.      */
  182.     public function AddFed(Request $request$idFed)
  183.     {
  184.        
  185.         $membre = new Membre();
  186.         $federation = new Federation();
  187.         $em $this->getDoctrine()->getManager();
  188.         $federation $em->getRepository(Federation::class)->find($idFed);
  189.         $membre->setFederation($federation);
  190.         
  191.         $form $this->get('form.factory')->create(MembreType::class, $membre);
  192.         if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
  193.             
  194.             $userForm $form->get('user')->getData();
  195.             $personne $userForm->getPersonne();
  196.             $email $personne->getNom() . $personne->getPrenom() . '@mlc.cd';
  197.             $email str_replace(' ','',$email);
  198.             
  199.             $checkMail false;
  200.             $i 1;
  201.             while ($checkMail == false){
  202.             $test $em->getRepository(User::class)->findBy(["email" => $email]);
  203.             
  204.             if ($test != null){
  205.                 $nb rand(11000);
  206.                 $email $personne->getNom() . $personne->getPrenom() . $nb '@mlc.cd';
  207.                 
  208.                 $i++;
  209.             }else{
  210.                 $checkMail true;
  211.             }
  212.             }
  213.             
  214.             $email str_replace(' ','',$email);
  215.             $userForm->setEmail($email); 
  216.             $userForm->setRoles(['ROLE_USER']);
  217.             $userForm->setPassword($this->passwordEncoder->encodePassword($userForm'test'));
  218.             $em->persist($membre);
  219.             $em->flush();
  220.           
  221.             return $this->redirectToRoute('membre_list_federation', array('idFed' => $federation->getId()));
  222.               
  223.         }
  224.         return $this->render('membre/add.html.twig', [
  225.       
  226.             'form' => $form->createView() ]);
  227.     }
  228.     /**
  229.      * @Route("/admin/membre/update/{id}", name="membre_update")
  230.      */
  231.     public function update(Request $request$id)
  232.     {
  233.        
  234.         $membre = new Membre();
  235.         $federation = new Federation();
  236.         $em $this->getDoctrine()->getManager();
  237.         $membre $em->getRepository(Membre::class)->find($id);
  238.         
  239.         $form $this->get('form.factory')->create(MembreTypeUpdate::class, $membre);
  240.         if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
  241.             
  242.             $userForm $form->get('user')->getData();
  243.             $password $form->get('user')->get('password')->getData();
  244.       
  245.             if (!empty($password)){
  246.             $userForm->setPassword($this->passwordEncoder->encodePassword($userForm$password));
  247.             }
  248.             $em->persist($membre);
  249.             $em->flush();
  250.           
  251.             return $this->redirectToRoute('membre_profil', array('id' => $membre->getId()));
  252.               
  253.         }
  254.         return $this->render('membre/add.html.twig', [
  255.       
  256.             'form' => $form->createView() ]);
  257.     }
  258.     /**
  259.      * @Route("/admin/membre/delete/{id}", name="membre_delete")
  260.      */
  261.     public function delete(Request $request$id)
  262.     {
  263.        
  264.         $membre = new Membre();
  265.         $em $this->getDoctrine()->getManager();
  266.         $membre $em->getRepository(Membre::class)->find($id);
  267.     
  268.         $em->remove($membre);
  269.         $em->flush();
  270.         return $this->redirectToRoute('membre_list');
  271.           
  272.     }
  273.     /**
  274.      * @Route("/admin/membre/updatephoto/{id}", name="membre_update_photo")
  275.      */
  276.     public function updatePhoto(Request $request$id)
  277.     {
  278.         $em $this->getDoctrine()->getManager();
  279.        
  280.         $membre $em->getRepository(Membre::class)->find($id);
  281.         $user $membre->getUser();
  282.         
  283.         
  284.         $formphoto $this->get('form.factory')->create(MembrePhotoType::class, $membre);
  285.        
  286.         if ($request->isMethod('POST') && $formphoto->handleRequest($request)->isValid()) {
  287.      
  288.             /** @var UploadedFile $photo */
  289.             $photo $formphoto->get('photo')->getData();
  290.             if ($photo) {
  291.                 $year date("Y");
  292.                 $month date("m");
  293.                 $day date("d");
  294.                 $hour date("H");
  295.                 $minute date("i");
  296.                 $seconde date("s");
  297.     
  298.                 $photoName =  "Photo" $user->getPersonne()->getNom() . $user->getPersonne()->getPostnom() . $user->getPersonne()->getPrenom() . $year $month $day $hour $minute$seconde"." $photo->guessExtension();
  299.                 $photoName str_replace(' ','',$photoName);
  300.                 try {
  301.                 $photo->move(
  302.                     $this->getParameter('membre_photo_directory'), $photoName);
  303.                 
  304.                  } catch (FileException $e) {
  305.                 
  306.                 }
  307.                 $membre->setPhoto($photoName);
  308.             }  
  309.             $em->persist($membre);
  310.             $em->flush(); 
  311.     
  312.             $request->getSession()->getFlashBag()->add('notice''photo bien enregistrée.');
  313.           
  314.           
  315.             return $this->redirectToRoute('membre_profil', array('id' => $membre->getId()));
  316.          
  317.     }
  318.     return $this->render('membre/photo.html.twig', ['formphoto' => $formphoto->createView()]); 
  319.    
  320.     
  321.     }
  322.     /**
  323.      * @Route("/membre/password/", name="membre_update_password")
  324.      */
  325.     public function updatePassword(Request $request)
  326.     {
  327.         $em $this->getDoctrine()->getManager();
  328.        
  329.         $user $this->getUser();
  330.         $membre $user->getMembre();
  331.         
  332.         $test " ";
  333.         $form $this->get('form.factory')->create(MembrePasswordType::class, $membre);
  334.        
  335.         if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
  336.      
  337.          
  338.              $oldPassword $form->get('oldpassword')->getData();
  339.              $password $form->get('password')->getData();
  340.              $password2 $form->get('password2')->getData();
  341.             
  342.             
  343.             if ($password == $password2){
  344.                 $user->setPassword($this->passwordEncoder->encodePassword($user$password));
  345.                 $em->persist($membre);
  346.                 $em->flush();       
  347.    
  348.             }else{
  349.                 return $this->redirectToRoute('membre_update_password', array("erreur" => "Les deux mots de passe ne sont pas identiques"));
  350.             }
  351.             return $this->redirectToRoute('membre_update_password', array("message" => "Mots de passe modifiés avec succès"));
  352.         
  353.          
  354.     }
  355.     return $this->render('membre/password.html.twig', ['form' => $form->createView(), 'test' => $test]); 
  356.    
  357.     
  358.     }
  359.     /**
  360.      * @Route("/password/", name="membre_oublie_password")
  361.      */
  362.     public function oublie(Request $request)
  363.     {
  364.   
  365.           return $this->render('membre/oublie.html.twig');
  366.     }
  367.     /**
  368.      * @Route("/password/process", name="membre_oublie_process")
  369.      */
  370.     public function oublieSuccess(Request $request)
  371.     {
  372.         $em $this->getDoctrine()->getManager();
  373.        
  374.         $personne $em->getRepository(Personne::class)->findOneBy(['telephone' => $_POST['telephone']]);
  375.         if ($personne == null){
  376.             return $this->redirectToRoute('membre_oublie_password', array("erreur" => "Ce numéro de téléphone n'est associé Ã  aucun compte"));
  377.         }
  378.         $user $personne->getUser();
  379.         $aleatoire rand(12008500);
  380.         $user->setPassword($this->passwordEncoder->encodePassword($user$aleatoire));
  381.         $em->persist($user);
  382.         $em->flush();
  383.         $this->smsOublie($_POST['telephone'], $user->getEmail(), $aleatoire);
  384.         
  385.         return $this->redirectToRoute('app_login');
  386.     }
  387.     /**
  388.      * @Route("/membre/update/photo", name="membre_profil_photo")
  389.      */
  390.     public function updatePhotoMembre(Request $request)
  391.     {
  392.         $em $this->getDoctrine()->getManager();
  393.        
  394.         //$membre = $em->getRepository(Membre::class)->find($id);
  395.         $user $this->getUser();
  396.         
  397.         $membre $user->getMembre();
  398.         
  399.         $formphoto $this->get('form.factory')->create(MembrePhotoType::class, $membre);
  400.        
  401.         if ($request->isMethod('POST') && $formphoto->handleRequest($request)->isValid()) {
  402.      
  403.             /** @var UploadedFile $photo */
  404.             $photo $formphoto->get('photo')->getData();
  405.             if ($photo) {
  406.                 $year date("Y");
  407.                 $month date("m");
  408.                 $day date("d");
  409.                 $hour date("H");
  410.                 $minute date("i");
  411.                 $seconde date("s");
  412.     
  413.                 $photoName =  "Photo" $user->getPersonne()->getNom() . $user->getPersonne()->getPostnom() . $user->getPersonne()->getPrenom() . $year $month $day $hour $minute$seconde"." $photo->guessExtension();
  414.                 $photoName str_replace(' ','',$photoName);
  415.                 try {
  416.                 $photo->move(
  417.                     $this->getParameter('membre_photo_directory'), $photoName);
  418.                 
  419.                  } catch (FileException $e) {
  420.                 
  421.                 }
  422.                 $membre->setPhoto($photoName);
  423.             }  
  424.             $em->persist($membre);
  425.             $em->flush(); 
  426.     
  427.             $request->getSession()->getFlashBag()->add('notice''photo bien enregistrée.');
  428.           
  429.           
  430.             return $this->redirectToRoute('usermembre_profil');
  431.          
  432.     }
  433.     return $this->render('membre/photo.html.twig', ['formphoto' => $formphoto->createView()]); 
  434.    
  435.     
  436.     }
  437.     
  438.     /**
  439.      * @Route("/membre/inscription/{id}", name="membre_inscription")
  440.      */
  441.     public function inscription(Request $request$id)
  442.     {
  443.        
  444.         $membre = new Membre();
  445.         $membre->setAdhesion(new \Datetime);
  446.         $em $this->getDoctrine()->getManager();
  447.         $province $em->getRepository(Province::class)->find($id);
  448.         //$membre->setProvince($province);
  449.         $form $this->get('form.factory')->create(MembreInscriptionType::class, $membre, array('province' => $province));
  450.         if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
  451.             
  452.             $userForm $form->get('user')->getData();
  453.             $password $form->get('user')->get('password')->getData();
  454.             $password2 $form->get('password2')->getData();
  455.             $commune $form->get('commune2')->getData();
  456.             $personne $userForm->getPersonne();
  457.             $checkDoublon $em->getRepository(Personne::class)->findDoublon($personne->getNom(), $personne->getPrenom(), $personne->getPostnom(), $personne->getDateNaissance(), $personne->getTelephone());
  458.             if ($checkDoublon == null){
  459.                 $personne->setCommune($commune->getNom());
  460.             
  461.                 $email $personne->getNom() . $personne->getPrenom() . '@mlc.cd';
  462.                 $email str_replace(' ','',$email);
  463.                 
  464.                 $checkMail false;
  465.                 $i 1;
  466.                 while ($checkMail == false){
  467.                 $test $em->getRepository(User::class)->findBy(["email" => $email]);
  468.                 
  469.                     if ($test != null){
  470.                         $nb rand(11000);
  471.                         $email $personne->getNom() . $personne->getPrenom() . $nb '@mlc.cd';
  472.                 
  473.                         $i++;
  474.                     }else{
  475.                         $checkMail true;
  476.                     }
  477.                 }
  478.             
  479.                 
  480.                 $email str_replace(' ','',$email);
  481.                 $userForm->setEmail($email); 
  482.                 $userForm->setRoles(['ROLE_USER']);
  483.                 $userForm->setPassword($this->passwordEncoder->encodePassword($userForm$password));
  484.                     if ($password == $password2){
  485.                         $em->persist($membre);
  486.                         $em->flush();       
  487.                         $this->sms2($personne->getTelephone(), $personne->getNom());
  488.                     }else{
  489.                         return $this->redirectToRoute('membre_inscription', array("id" => 2"erreur" => "Les deux mots de passe ne sont pas identiques"));
  490.                     }
  491.             
  492.                 return $this->redirectToRoute('app_login', array("mail" => $email));
  493.             }else{
  494.                 return $this->redirectToRoute('app_login', array("doublon" => "Il semblerait que vous ayez déja Ã©té enregistré, veuillez vous connecter ou contacter un administrateur"));
  495.             }
  496.               
  497.         }
  498.         return $this->render('membre/inscription.html.twig', [
  499.       
  500.             'form' => $form->createView() ]);
  501.     }
  502.     /**
  503.      * @Route("/inscriptionprovince/", name="inscription_province")
  504.      */
  505.     public function inscriptionProvince(): Response
  506.     {
  507.         $provinces = new Province();
  508.         $em $this->getDoctrine()->getManager();
  509.         $provinces $em->getRepository(Province::class)->findAll();
  510.        
  511.         return $this->render('membre/inscription-province.html.twig', ['provinces' => $provinces]);
  512.     }
  513.     /**
  514.      * @Route("/admin/membre/profil/{id}", name="membre_profil")
  515.      */
  516.     public function profil($id)
  517.     {
  518.         
  519.         $membre = new Membre();
  520.         $entityManager $this->getDoctrine()->getManager();
  521.         $membre $entityManager->getRepository(Membre::class)->find($id);
  522.         $federations $entityManager->getRepository(Federation::class)->findAll();
  523.     
  524.         return $this->render('membre/profil.html.twig', ['membre' => $membre'federations' => $federations]); 
  525.     }
  526.     /**
  527.      * @Route("/admin/demande/profil/{id}", name="demande_profil")
  528.      */
  529.     public function demandeProfil($id)
  530.     {
  531.         
  532.         $demande = new demande();
  533.         $entityManager $this->getDoctrine()->getManager();
  534.         $demande $entityManager->getRepository(Demande::class)->find($id);
  535.         $federations $entityManager->getRepository(Federation::class)->findAll();
  536.     
  537.         return $this->render('membre/demande-profil.html.twig', ['demande' => $demande]); 
  538.     }
  539.     /**
  540.      * @Route("/demande/", name="demande_user")
  541.      */
  542.     public function demandeAttente()
  543.     {
  544.         
  545.         $user $this->getUser();
  546.         $demande = new Demande();
  547.         $demande $user->getDemande();
  548.         //$entityManager = $this->getDoctrine()->getManager();
  549.         //$demande = $entityManager->getRepository(Demande::class)->find($id);
  550.         //$federations = $entityManager->getRepository(Federation::class)->findAll();
  551.     
  552.         return $this->render('membre/demande.html.twig', ['demande' => $demande]); 
  553.     }
  554.     /**
  555.      * @Route("/admin/demande/confirmation/{id}", name="demande_confirmation")
  556.      */
  557.     public function demandeConfirmation($id)
  558.     {
  559.         
  560.   
  561.         $demande = new Demande();
  562.         $membre = new Membre();
  563.         $entityManager $this->getDoctrine()->getManager();
  564.         $demande $entityManager->getRepository(Demande::class)->find($id);
  565.         $user $demande->getUser();
  566.         $user->setRoles(['ROLE_USER']);
  567.         $membre->setFederation($demande->getFederation());
  568.         $membre->setUser($user);
  569.         $membre->setAdhesion(new \Datetime);
  570.         $demande->setEtat(0);
  571.         $entityManager->persist($membre);
  572.         $entityManager->persist($demande);
  573.         $entityManager->flush();
  574.         
  575.     
  576.         return $this->redirectToRoute('membre_list'); 
  577.     }
  578.     /**
  579.      * @Route("/admin/demande/remove/{id}", name="demande_remove")
  580.      */
  581.     public function demandeRemove($id)
  582.     {
  583.         
  584.   
  585.         $demande = new Demande();
  586.         $membre = new Membre();
  587.         $entityManager $this->getDoctrine()->getManager();
  588.         $demande $entityManager->getRepository(Demande::class)->find($id);
  589.         $user $demande->getUser();
  590.         $demande->setEtat(0);
  591.         $entityManager->persist($demande);
  592.         $entityManager->flush();
  593.         
  594.         return $this->redirectToRoute('demande_list_federation', array("idFed" => $demande->getFederation()->getId())); 
  595.     }
  596.     /**
  597.      * @Route("/user/usermembre/profil/", name="usermembre_profil")
  598.      */
  599.     public function userMembre()
  600.     {
  601.         
  602.         $membre = new Membre();
  603.         $user $this->getUser();
  604.         return $this->render('membre/user.html.twig', ['user' => $user]); 
  605.     }
  606.     /**
  607.      * @Route("/user/usermembre/visa/", name="visa_payement")
  608.      */
  609.     public function visa()
  610.     {
  611.         
  612.         $membre = new Membre();
  613.         $user $this->getUser();
  614.         return $this->render('membre/visa.html.twig', ['user' => $user]); 
  615.     }
  616.     /**
  617.      * @Route("/user/usermembre/visa/validation", name="visa_validation")
  618.      */
  619.     public function visaValidation(Request $request)
  620.     {
  621.         
  622.         $montant $request->get('amount');
  623.         $devise  $request->get('currency');
  624.         $user $this->getUser();
  625.         $year date("Y");
  626.         $month date("m");
  627.         $day date("d");
  628.         $hour date("h");
  629.         $min date("i");
  630.         $sec date("sa");
  631.         $aleatoire rand(01000);
  632.         $membre $this->getUser()->getMembre();
  633.         $reference "MLC" $year $month $day $hour $min $sec $aleatoire "M" $membre->getId();
  634.         $transaction = new Transaction();
  635.         $transaction->setMontant($montant);
  636.         $transaction->setReference($reference);
  637.         $transaction->setMembre($membre);
  638.         $transaction->setDevise($devise);
  639.         $transaction->setTelephone('----');
  640.         $transaction->setDate(new \DateTime);
  641.         $em $this->getDoctrine()->getManager();
  642.         $em->persist($transaction);
  643.         $em->flush();
  644.         return $this->render('membre/visa-confirmation.html.twig', ['user' => $user'montant' => $montant'devise' => $devise'reference' => $reference]); 
  645.     }
  646.     /**
  647.      * @Route("/user/usermembre/mobilemoney/", name="mobile_money")
  648.      */
  649.     public function mobilemoney(Request $request)
  650.     {
  651.         $user $this->getUser();
  652.         $telephone $request->get('telephone');
  653.         $montant $request->get('montant');
  654.         $devise $request->get('devise');
  655.         $membre $user->getMembre();
  656.         $year date("Y");
  657.         $month date("m");
  658.         $day date("d");
  659.         $hour date("h");
  660.         $min date("i");
  661.         $sec date("sa");
  662.         $aleatoire rand(01000);
  663.         $reference "MLC" $year $month $day $hour $min $sec $aleatoire "M" $membre->getId();
  664.         $transaction = new Transaction();
  665.         $transaction->setMontant($montant);
  666.         $transaction->setReference($reference);
  667.         $transaction->setMembre($membre);
  668.         $transaction->setDevise($devise);
  669.         $transaction->setTelephone($telephone);
  670.         
  671.         $url "https://backend.flexpay.cd/api/rest/v1/paymentService";
  672.         $curl curl_init($url);
  673.         curl_setopt($curlCURLOPT_URL$url);
  674.         curl_setopt($curlCURLOPT_POSTtrue);
  675.         curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
  676.         $headers = array(
  677.             "Accept: application/json",
  678.             "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJcL2xvZ2luIiwicm9sZXMiOlsiTUVSQ0hBTlQiXSwiZXhwIjoxNzY5NDQzNzU0LCJzdWIiOiIxMWE3NDA3MTA2NTYzMTc2MDBiOTgxNTZiNzM5NzMzMiJ9.uu7lK_URS6U8SsG9U_YupThuPWlpsAirZpDvVo0eDi8",
  679.             "Content-Type: application/json",
  680.          );
  681.          curl_setopt($curlCURLOPT_HTTPHEADER$headers);
  682.         $data = array(
  683.             'merchant' => 'MLCRDC',
  684.             "type" => "1",
  685.             
  686.             "description" => "Contribution MLC"
  687.         
  688.             "phone" => $telephone
  689.             "reference" => $reference
  690.             "amount" => $montant
  691.             "currency" => $devise
  692.             "callbackUrl" => "https://mlcapp.org/user/confirmation/"
  693.             
  694.         );
  695.         $postdata json_encode($data);
  696.         curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
  697.         //for debug only!
  698.         curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
  699.         curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
  700.         $resp curl_exec($curl);
  701.         $val json_decode($resptrue);
  702.         $orderNumber $val['orderNumber'];
  703.         $transaction->setOrderNumber($orderNumber);
  704.         $transaction->setEnvois($val['code']);
  705.         $transaction->setDate(new \DateTime);
  706.         $em $this->getDoctrine()->getManager();
  707.         
  708.         if ($val['code'] == 0){
  709.             $em->persist($transaction);
  710.     
  711.             $em->flush();
  712.             curl_close($curl);
  713.             return $this->redirectToRoute('confirmation_payement');
  714.         }else{
  715.             $em->persist($transaction);
  716.     
  717.             $em->flush();
  718.             $message $val['message'];
  719.             curl_close($curl);
  720.             return $this->redirectToRoute('payement_error', array('message' => $message)); 
  721.         }
  722.      
  723.        
  724.         //return $this->redirectToRoute('confirmation_payement'); 
  725.     }
  726.     /**
  727.      * @Route("/user/carte/achat", name="carte_achat")
  728.      */
  729.     public function carteAchat(Request $request)
  730.     {
  731.         $user $this->getUser();
  732.         $telephone $request->get('telephone');
  733.         
  734.         $devise $request->get('devise');
  735.         $membre $user->getMembre();
  736.         $montant 0;
  737.         if ($devise == "CDF"){
  738.             $montant 2500;
  739.         }else{
  740.             $montant 1.25;
  741.         }
  742.         $year date("Y");
  743.         $month date("m");
  744.         $day date("d");
  745.         $hour date("h");
  746.         $min date("i");
  747.         $sec date("sa");
  748.         $aleatoire rand(01000);
  749.         $reference "MLCCARTE" $year $month $day $hour $min $sec $aleatoire "M" $membre->getId();
  750.         $transaction = new Transaction();
  751.         $transaction->setMontant($montant);
  752.         $transaction->setReference($reference);
  753.         $transaction->setMembre($membre);
  754.         $transaction->setDevise($devise);
  755.         $transaction->setTelephone($telephone);
  756.         
  757.         $url "https://backend.flexpay.cd/api/rest/v1/paymentService";
  758.         $curl curl_init($url);
  759.         curl_setopt($curlCURLOPT_URL$url);
  760.         curl_setopt($curlCURLOPT_POSTtrue);
  761.         curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
  762.         $headers = array(
  763.             "Accept: application/json",
  764.             "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJcL2xvZ2luIiwicm9sZXMiOlsiTUVSQ0hBTlQiXSwiZXhwIjoxNzY5NDQzNzU0LCJzdWIiOiIxMWE3NDA3MTA2NTYzMTc2MDBiOTgxNTZiNzM5NzMzMiJ9.uu7lK_URS6U8SsG9U_YupThuPWlpsAirZpDvVo0eDi8",
  765.             "Content-Type: application/json",
  766.          );
  767.          curl_setopt($curlCURLOPT_HTTPHEADER$headers);
  768.         $data = array(
  769.             'merchant' => 'MLCRDC',
  770.             "type" => "1",
  771.             
  772.             "description" => "Contribution MLC"
  773.         
  774.             "phone" => $telephone
  775.             "reference" => $reference
  776.             "amount" => $montant
  777.             "currency" => $devise
  778.             "callbackUrl" => "https://mlcapp.org/user/confirmationcarte/"
  779.             
  780.         );
  781.         $postdata json_encode($data);
  782.         curl_setopt($curlCURLOPT_POSTFIELDS$postdata);
  783.         //for debug only!
  784.         curl_setopt($curlCURLOPT_SSL_VERIFYHOSTfalse);
  785.         curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
  786.         $resp curl_exec($curl);
  787.         $val json_decode($resptrue);
  788.         $orderNumber $val['orderNumber'];
  789.         $transaction->setOrderNumber($orderNumber);
  790.         $transaction->setEnvois($val['code']);
  791.         $transaction->setDate(new \DateTime);
  792.         $em $this->getDoctrine()->getManager();
  793.         
  794.         if ($val['code'] == 0){
  795.             $em->persist($transaction);
  796.     
  797.             $em->flush();
  798.             curl_close($curl);
  799.             return $this->redirectToRoute('confirmation_payement_carte');
  800.         }else{
  801.             $em->persist($transaction);
  802.     
  803.             $em->flush();
  804.             $message $val['message'];
  805.             curl_close($curl);
  806.             return $this->redirectToRoute('payement_error', array('message' => $message)); 
  807.         }
  808.         //return $this->redirectToRoute('confirmation_payement'); 
  809.     }
  810.     /**
  811.      * @Route("/user/mobilemoneypayment/", name="mobile_money_pay")
  812.      */
  813.     public function mobilemoneypayment()
  814.     {
  815.         $user $this->getUser();
  816.         
  817.         return $this->render('membre/mobilemoney.html.twig', ['user' => $user]); 
  818.     }
  819.     /**
  820.      * @Route("/user/cartepayment/", name="carte_pay")
  821.      */
  822.     public function cartepayment()
  823.     {
  824.         $user $this->getUser();
  825.         return $this->render('membre/carte-pay.html.twig', ['user' => $user]); 
  826.     }
  827.     /**
  828.      * @Route("/user/confirmation/", name="confirmation")
  829.      */
  830.     public function conf(Request $request)
  831.     {
  832.    
  833.         $data json_decode($request->getContent(), true);
  834.         $code $data['code'];
  835.         $reference $data['reference'];
  836.         $em $this->getDoctrine()->getManager();
  837.         if($code == 0){
  838.            
  839.             $transaction $em->getRepository(Transaction::class)->findOneBy(["reference" => $reference]);
  840.             $membre $transaction->getMembre();
  841.             $cotisation = new Cotisation();
  842.             if ($transaction->getEtat() == null){
  843.             $cotisation->setMembre($membre);
  844.             $cotisation->setReference($reference);
  845.             $montant $transaction->getMontant();
  846.             if ($transaction->getDevise() == 'USD'){
  847.                     $montant $montant 2850;
  848.             }
  849.             $cotisation->setMontant($montant);
  850.             $cotisation->setDate(new \DateTime);
  851.             $cotisation->setOrdernumber($data['orderNumber']);
  852.             $cotisation->setProviderNumber($data['provider_number']);
  853.             $transaction->setEtat(0);
  854.             $em->persist($cotisation);
  855.             $em->flush();
  856.             }
  857.         
  858.             }else{
  859.             $transaction $em->getRepository(Transaction::class)->findOneBy(["reference" => $reference]);
  860.             $transaction->setEtat(1);
  861.             $transaction->setOrderNumber($data['orderNumber']);
  862.             $em->persist($transaction);
  863.             $em->flush();
  864.         }
  865.     }
  866.     /**
  867.      * @Route("/confirmationcarte/", name="confirmation_carte")
  868.      */
  869.     public function confCarte(Request $request)
  870.     {
  871.    
  872.          $data json_decode($request->getContent(), true);
  873.          $code $data['code'];
  874.          $reference $data['reference'];
  875.         $em $this->getDoctrine()->getManager();
  876.         
  877.          
  878.          $transaction $em->getRepository(Transaction::class)->findOneBy(["reference" => $reference]);
  879.          $transaction->setOrdernumber($data['orderNumber']);
  880.          $transaction->setEnvois(0);
  881.          $membre $transaction->getMembre();
  882.          if($code == 0){
  883.         //     $membre->setCarte(true);
  884.             
  885.              $montant $transaction->getMontant();
  886.              $transaction->setEtat(0);
  887.              $transaction->setEnvois(0);
  888.             if ($transaction->getDevise() == 'USD'){
  889.                     $montant $montant 2300;
  890.             }
  891.             $cotisation = new Cotisation();
  892.             $cotisation->setMembre($membre);
  893.             $cotisation->setReference($reference);
  894.             $montant $transaction->getMontant();
  895.             if ($transaction->getDevise() == 'USD'){
  896.                     $montant $montant 2300;
  897.             }
  898.             $cotisation->setMontant($montant);
  899.             $cotisation->setDate(new \DateTime);
  900.             $cotisation->setOrdernumber($data['orderNumber']);
  901.             $cotisation->setProviderNumber(' -- ');
  902.             $em->persist($cotisation);
  903.             $em->flush();
  904.         
  905.              }else{
  906.             $transaction->setEtat(1);
  907.             $transaction->setEnvois(0);
  908.             //$membre->setCarte(true);
  909.             $em->persist($transaction);
  910.         
  911.             $em->flush();
  912.          }
  913.     }
  914.     /**
  915.      * @Route("/user/confirmationpayementvisa/", name="confirmation_payement_visa")
  916.      */
  917.     public function confVisa()
  918.     {
  919.         
  920.         $user $this->getUser();
  921.         $membre $user->getMembre();
  922.         
  923.         return $this->render('membre/confirmation-visa.html.twig', ['user' => $user]); 
  924.     }
  925.     /**
  926.      * @Route("/user/confirmationpayement/", name="confirmation_payement")
  927.      */
  928.     public function enregPayment()
  929.     {
  930.         
  931.         $user $this->getUser();
  932.         $membre $user->getMembre();
  933.         
  934.         return $this->render('membre/confirmation.html.twig', ['user' => $user]); 
  935.     }
  936.     /**
  937.      * @Route("/confirmationpayementcarte/", name="confirmation_payement_carte")
  938.      */
  939.     public function cartePayConf()
  940.     {
  941.         
  942.         $user $this->getUser();
  943.         $membre $user->getMembre();
  944.         
  945.         return $this->render('membre/confirmation-carte.html.twig', ['user' => $user]); 
  946.     }
  947.     /**
  948.      * @Route("/payement/error/{message}", name="payement_error")
  949.      */
  950.     public function payementError($message)
  951.     {
  952.         
  953.         $user $this->getUser();
  954.         $membre $user->getMembre();
  955.         $info $message;
  956.         
  957.         return $this->render('membre/error-payement.html.twig', ['user' => $user'message' => $info]); 
  958.     }
  959.     /**
  960.      * @Route("/test", name="test_token")
  961.      */
  962.     public function test()
  963.     {
  964.         
  965.         
  966.         //$test = $this->token();
  967.         $curl curl_init();
  968.         curl_setopt_array($curl, array(
  969.         CURLOPT_URL => 'https://api.orange.com/oauth/v3/token',
  970.         CURLOPT_RETURNTRANSFER => true,
  971.         CURLOPT_ENCODING => '',
  972.         CURLOPT_MAXREDIRS => 10,
  973.         CURLOPT_TIMEOUT => 0,
  974.         CURLOPT_FOLLOWLOCATION => true,
  975.         CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  976.         CURLOPT_CUSTOMREQUEST => 'POST',
  977.         CURLOPT_POSTFIELDS => 'grant_type=client_credentials',
  978.         CURLOPT_HTTPHEADER => array(
  979.             'Content-Type: application/x-www-form-urlencoded',
  980.             'Authorization: Basic WFg1TDZ4aGdNeWRZNmxHRzk1Zkxsb2o1TmNKdFdpcTU6UzI5TDJibmJHMHJUd216TA=='
  981.         ),
  982.         ));
  983.         $response curl_exec($curl);
  984.         $val json_decode($responsetrue);
  985.         $test $val['access_token'];
  986.         curl_close($curl);
  987.         
  988.         return $this->render('test.html.twig', ['test' => $test]);
  989.          
  990.     }
  991.     
  992.     /**
  993.      * @Route("/admin/membre/carte/{id}", name="membre_carte")
  994.      */
  995.     public function carte($idPdf $knpSnappyPdf)
  996.     {
  997.         
  998.         $membre = new Membre();
  999.         $entityManager $this->getDoctrine()->getManager();
  1000.         $membre $entityManager->getRepository(Membre::class)->find($id);
  1001.         $user $membre->getUser();
  1002.         
  1003.         $aleatoire rand(110000);
  1004.         $dateT date_create();
  1005.         $timestamp date_timestamp_get($dateT);
  1006.         $dateDepart =  date("Y/m/d"strtotime("last month"));
  1007.         $nomFichier 'Carte' $user->getPersonne()->getNom() . $user->getPersonne()->getPostnom() . $user->getPersonne()->getPrenom() . $timestamp $aleatoire '.pdf' ;
  1008.         $title "Carte MLC";
  1009.         $knpSnappyPdf->setOption('enable-local-file-access'true);
  1010.         $knpSnappyPdf->setOption('page-width''180');
  1011.         $knpSnappyPdf->setOption('page-height''130');
  1012.         $qrcode $this->qrcodeGen($membre);
  1013.         $file $knpSnappyPdf->generateFromHtml$this->renderView('membre/carte.html.twig', array('membre' => $membre'qrcode' => $qrcode)), 'uploads/cartes/'$nomFichier);
  1014.       
  1015.         
  1016.         return $this->file('uploads/cartes/'.$nomFichier'MLC'ResponseHeaderBag::DISPOSITION_INLINE); 
  1017.     }
  1018.     /**
  1019.      * @Route("/user/membre/carte/", name="membre_carte_gen")
  1020.      */
  1021.     public function carteMembreGen(Pdf $knpSnappyPdf)
  1022.     {
  1023.         
  1024.         $membre = new Membre();
  1025.         $entityManager $this->getDoctrine()->getManager();
  1026.         $user $this->getUser();
  1027.         $membre $user->getMembre();
  1028.         $aleatoire rand(110000);
  1029.         $dateT date_create();
  1030.         $timestamp date_timestamp_get($dateT);
  1031.         $dateDepart =  date("Y/m/d"strtotime("last month"));
  1032.         $nomFichier 'Carte' $user->getPersonne()->getNom() . $user->getPersonne()->getPostnom() . $user->getPersonne()->getPrenom() . $timestamp $aleatoire '.pdf' ;
  1033.         $title "Carte MLC";
  1034.         $knpSnappyPdf->setOption('enable-local-file-access'true);
  1035.         $qrcode $this->qrcodeGen($membre);
  1036.         $file $knpSnappyPdf->generateFromHtml$this->renderView('membre/carte.html.twig', array('membre' => $membre'qrcode' => $qrcode)), 'uploads/cartes/'$nomFichier);    
  1037.         
  1038.         return $this->file('uploads/cartes/'.$nomFichier'Res'ResponseHeaderBag::DISPOSITION_INLINE); 
  1039.     }
  1040.     public function sms($numero$nom){
  1041.         $sid 'ACa4e47b111da51c6e9e440d3168abb1d4';
  1042.         $token '239796fc29a1d9ed611b04816582449a';
  1043.         $client = new Client($sid$token);
  1044.         
  1045.         $client->messages->create(
  1046.             $numero,
  1047.             [
  1048.                 'from' => '+19896621952',
  1049.           
  1050.                 'body' => 'MLC App: Bienvenu au parti ' $nom
  1051.             ]
  1052.         );
  1053.     }
  1054.     public function token(){
  1055.             $curl curl_init();
  1056.             curl_setopt_array($curl, array(
  1057.             CURLOPT_URL => 'https://api.orange.com/oauth/v3/token',
  1058.             CURLOPT_RETURNTRANSFER => true,
  1059.             CURLOPT_ENCODING => '',
  1060.             CURLOPT_MAXREDIRS => 10,
  1061.             CURLOPT_TIMEOUT => 0,
  1062.             CURLOPT_FOLLOWLOCATION => true,
  1063.             CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  1064.             CURLOPT_CUSTOMREQUEST => 'POST',
  1065.             CURLOPT_POSTFIELDS => 'grant_type=client_credentials',
  1066.             CURLOPT_HTTPHEADER => array(
  1067.                 'Content-Type: application/x-www-form-urlencoded',
  1068.                 'Authorization: Basic WFg1TDZ4aGdNeWRZNmxHRzk1Zkxsb2o1TmNKdFdpcTU6UzI5TDJibmJHMHJUd216TA=='
  1069.             ),
  1070.             ));
  1071.             $response curl_exec($curl);
  1072.             $val json_decode($responsetrue);
  1073.             $test $val['access_token'];
  1074.             
  1075.             curl_close($curl);
  1076.             
  1077.             return $test;
  1078.     }
  1079.     public function sms2($numero$nom){
  1080.         $token $this->token();
  1081.         $curl curl_init();
  1082.         $telephone "tel:"$numero;
  1083.         
  1084.         curl_setopt_array($curl, array(
  1085.           CURLOPT_URL => 'https://api.orange.com/smsmessaging/v1/outbound/tel:+243132061/requests',
  1086.           CURLOPT_RETURNTRANSFER => true,
  1087.           CURLOPT_ENCODING => '',
  1088.           CURLOPT_MAXREDIRS => 10,
  1089.           CURLOPT_TIMEOUT => 0,
  1090.           CURLOPT_FOLLOWLOCATION => true,
  1091.           CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  1092.           CURLOPT_CUSTOMREQUEST => 'POST',
  1093.           CURLOPT_POSTFIELDS =>'{
  1094.             "outboundSMSMessageRequest": {
  1095.                 "address":"' $telephone '" ,
  1096.                 "senderAddress":"tel:+243132061",
  1097.                 "outboundSMSTextMessage": {
  1098.                     "message": "MLC App : Confirmation inscription. Bienvenu Mr ' $nom  ' "
  1099.                 }
  1100.             }
  1101.         } ',
  1102.           CURLOPT_HTTPHEADER => array(
  1103.             'Content-Type: application/json',
  1104.             'Authorization: Bearer ' .$token
  1105.           ),
  1106.         ));
  1107.         
  1108.         $response curl_exec($curl);
  1109.         
  1110.         curl_close($curl);
  1111.     }
  1112.     public function smsOublie($numero$nom$aleatoire){
  1113.         $token $this->token();
  1114.         $curl curl_init();
  1115.         $telephone "tel:"$numero;
  1116.         
  1117.         curl_setopt_array($curl, array(
  1118.           CURLOPT_URL => 'https://api.orange.com/smsmessaging/v1/outbound/tel:+243132061/requests',
  1119.           CURLOPT_RETURNTRANSFER => true,
  1120.           CURLOPT_ENCODING => '',
  1121.           CURLOPT_MAXREDIRS => 10,
  1122.           CURLOPT_TIMEOUT => 0,
  1123.           CURLOPT_FOLLOWLOCATION => true,
  1124.           CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  1125.           CURLOPT_CUSTOMREQUEST => 'POST',
  1126.           CURLOPT_POSTFIELDS =>'{
  1127.             "outboundSMSMessageRequest": {
  1128.                 "address":"' $telephone '" ,
  1129.                 "senderAddress":"tel:+243132061",
  1130.                 "outboundSMSTextMessage": {
  1131.                     "message": "MLC App : Nouveau mot de passe ' $aleatoire ' pour le compte ' $nom  ' "
  1132.                 }
  1133.             }
  1134.         } ',
  1135.           CURLOPT_HTTPHEADER => array(
  1136.             'Content-Type: application/json',
  1137.             'Authorization: Bearer ' .$token
  1138.           ),
  1139.         ));
  1140.         
  1141.         $response curl_exec($curl);
  1142.         
  1143.         curl_close($curl);
  1144.     }
  1145.     public function qrcodeGen(Membre $membre)
  1146.     {
  1147.         $code $membre->getUser()->getPersonne()->getNom() . " " $membre->getUser()->getPersonne()->getPrenom() . " " $membre->getUser()->getPersonne()->getPostnom();
  1148.                     
  1149.     
  1150.         $writer = new PngWriter();
  1151.         $qrCode QrCode::create($code)
  1152.             ->setEncoding(new Encoding('UTF-8'))
  1153.             ->setErrorCorrectionLevel(new ErrorCorrectionLevelLow())
  1154.             ->setSize(300)
  1155.             ->setMargin(10)
  1156.             ->setRoundBlockSizeMode(new RoundBlockSizeModeMargin())
  1157.             ->setForegroundColor(new Color(000))
  1158.             ->setBackgroundColor(new Color(255255255));
  1159.             $projectRoot $this->getParameter('kernel.project_dir');
  1160.         $label Label::create('')
  1161.             ->setTextColor(new Color(7143100));
  1162.         $result $writer->write($qrCodenull$label);
  1163.         $nomFichier $membre->getId() . '.png';
  1164.      
  1165.         $result->saveToFile($projectRoot .'/public/uploads/qrcode/' $nomFichier);
  1166.         return $nomFichier;
  1167.     }
  1168.     private $passwordEncoder;
  1169.     public function __construct(UserPasswordEncoderInterface $passwordEncoder)
  1170.     {
  1171.         $this->passwordEncoder $passwordEncoder;
  1172.     }
  1173. }