src/Controller/Users/User/SecurityController.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Users\User;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\Security\Core\SecurityContext;
  5. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use App\Service\Servicetext\GeneralServicetext;
  8. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  9. use App\Service\Email\Singleemail;
  10. use App\Entity\Users\User\User;
  11. use App\Entity\Produit\Projet\Projet;
  12. use App\Entity\Produit\Service\Service;
  13. use App\Entity\Users\User\Imgslide;
  14. use App\Entity\Produit\Produit\Categorie;
  15. use App\Entity\Produit\Service\Recrutement;
  16. class SecurityController extends AbstractController
  17. {
  18. private $params;
  19. private $_servicemail;
  20. public function __construct(ParameterBagInterface $paramsSingleemail $servicemail)
  21. {
  22.     $this->params $params;
  23.     $this->_servicemail $servicemail;
  24. }
  25. public function login(Request $requestGeneralServicetext $service)
  26. {
  27.     $em $this->getDoctrine()->getManager();
  28.     // Si le visiteur est déjà identifié, on le redirige vers l'accueil
  29.     if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')){
  30.         return $this->redirect($this->generateUrl('users_user_acces_plateforme'));
  31.     }
  32.     //connexion sécurisé user.
  33.     $error_login '';
  34.     if($request->getMethod() == 'POST' and $this->getUser() == null){
  35.         if(isset($_POST['username']) and isset($_POST['password'])){
  36.             $repository $em->getRepository(User::class);
  37.             $user $repository->findOneBy(array('username'=>$_POST['username']));
  38.             
  39.             if($user != null)
  40.             {
  41.                 if(trim($_POST['password']) == trim($service->decrypt($user->getPassword(),$user->getSalt())))
  42.                 {
  43.                     // Verifie si le cookie n existe pas
  44.                     if((!isset($_COOKIE["PIDSESSREM"]) or $_COOKIE["PIDSESSREM"] == 'delete') and isset($_POST['_remember_me']) and $_POST['_remember_me'] == true)
  45.                     {
  46.                         // Stock les infos du cookie
  47.                         $cookie_info = array(
  48.                             'name'  => 'PIDSESSREM',
  49.                             'value' => $service->encrypt($user->getUsername(),$this->params->get('saltcookies')),
  50.                             'time'  => time() + (3600 24 360)
  51.                         );
  52.                         // Cree le cookie
  53.                         setCookie($cookie_info['name'], $cookie_info['value'], $cookie_info['time'],'/');
  54.                         setCookie('PIDSESSDUR',$cookie_info['time'], $cookie_info['time'],'/');
  55.                     }
  56.                     
  57.                     $session $this->get('session');
  58.                     
  59.                     $idprojet $session->get('projet_tag');
  60.                     if($idprojet != null and $idprojet 0)
  61.                     {
  62.                         $projet $em->getRepository(Projet::class)
  63.                                          ->find($idprojet);
  64.                         if($projet != null)
  65.                         {
  66.                             $projet->setUser($user);
  67.                             $em->flush();
  68.                         }
  69.                     }
  70.                     $target_link $session->get('_security.welcome.target_path');//permet de poussuivre son activité en cas de connexion forcée !
  71.                     if($target_link != null and strlen($target_link) > 5)
  72.                     {
  73.                         return $this->redirect($target_link);
  74.                     }else{
  75.                         return $this->redirect($this->generateUrl('users_user_user_accueil', array('id'=>$user->getId())));
  76.                     }
  77.                 }else{
  78.                     $error_login 'Echec: Mot de passe ou Email invalide.';
  79.                 }
  80.             }
  81.         }
  82.     }
  83.     
  84.     return $this->render('Theme/Users/User/Security/login.html.twig',
  85.     array('error_login'=> $error_login));
  86. }
  87. public function accueilsite(GeneralServicetext $service)
  88. {
  89.     $em $this->getDoctrine()->getManager();
  90.     $user $this->getUser();
  91.     $liste_actualite $em->getRepository(Service::class)
  92.                           ->findBy(array('typearticle'=>'actualite','principal'=>1), array('rang'=>'asc'),20);
  93.     $liste_slide $em->getRepository(Imgslide::class)
  94.                       ->myFindAcceuil();
  95.     $liste_slide $service->selectEntities($liste_slide6);
  96.     
  97.     $liste_formation $em->getRepository(Categorie::class)
  98.                              ->myTypeFormation(2);
  99.     foreach($liste_formation as $formation)
  100.     {
  101.         $formation->setEm($em);
  102.         foreach($formation->getSouscategories() as $scat)
  103.         {
  104.             $scat->setEm($em);
  105.         }
  106.     }
  107.     $liste_article $em->getRepository(Service::class)
  108.                          ->findBlog(1,15,'evenement');
  109.     $liste_dossier $em->getRepository(Recrutement::class)
  110.                          ->findPublicSupport();
  111.     return $this->render('Theme/Users/User/Security/accueilsite.html.twig',
  112.     array('liste_slide'=>$liste_slide,'liste_actualite'=>$liste_actualite,'liste_formation'=>$liste_formation
  113.     ,'liste_article'=>$liste_article'liste_dossier'=>$liste_dossier));
  114. }
  115. public function logout()
  116. {
  117.     if(isset($_COOKIE["PIDSESSREM"]) and isset($_COOKIE["PIDSESSDUR"]))
  118.     {
  119.         // Stock les infos du cookie
  120.         $cookie_info = array(
  121.             'name'  => "PIDSESSREM",
  122.             'value' => "delete",
  123.             'time'  => $_COOKIE["PIDSESSDUR"]
  124.         );
  125.         setCookie($cookie_info['name'], $cookie_info['value'], $cookie_info['time'],'/');
  126.     }
  127.     return $this->redirect($this->generateUrl('users_user_acces_plateforme'));
  128. }
  129. public function resetpassword(GeneralServicetext $service$etape)
  130. {
  131.     $em $this->getDoctrine()->getManager();
  132.     $session $this->get('session');
  133.     if($etape == 1)
  134.     {
  135.         if(isset($_POST['username']))
  136.         {
  137.             $repository $em->getRepository(User::class);
  138.             $user $repository->findOneBy(array('username'=>$_POST['username']));
  139.             
  140.             if($user != null)
  141.             {
  142.                 $code $user->getDatebeg();
  143.                 if($service->email($user->getUsername()))
  144.                 {
  145.                     $siteweb $this->params->get('siteweb');
  146.                     $sitename $this->params->get('sitename');
  147.                     $emailadmin $this->params->get('emailadmin');
  148.             
  149.                     $response $this->_servicemail->sendNotifEmail(
  150.                         $user->name(30), //Nom du destinataire
  151.                         $user->getUsername(), //Email Destinataire
  152.                         $user->name(30).', Vous avez demandé la réinitialisation du mot de passe de votre compte '.$sitename//Objet de l'email
  153.                         $user->name(30).', Vous avez demandé la réinitialisation du mot de passe de votre compte '.$sitename//Grand Titre de l'email
  154.                         'Le code est: <strong style="font-size: 25px;">'.$code.'</strong></br></br> Si vous n\'avez pas demandé cette action, Aucune action n\'est requise de votre part.',  //Contenu de l'email
  155.                         $siteweb.'/login'  //Lien à suivre
  156.                     );
  157.                     $type 1;
  158.                 }else{
  159.                     $type 2;
  160.                 }
  161.                 
  162.                 return $this->render('Theme/Users/User/Security/resetpassword.html.twig',
  163.                 array('type' =>$type,'etape'=> $etape,'user'=>$user));
  164.             }else{
  165.                 echo 0;
  166.                 exit;
  167.             }
  168.         }else{
  169.             echo 0;
  170.             exit;
  171.         }
  172.     }else if($etape == 2)
  173.     {
  174.         if(isset($_POST['code']) and isset($_POST['id']))
  175.         {
  176.             $repository $em->getRepository(User::class);
  177.             $user $repository->find($_POST['id']);
  178.             
  179.             if($user != null and $user->getDatebeg() == trim($_POST['code']))
  180.             {
  181.                 $session->set('reset_password'1);
  182.                 return $this->render('Theme/Users/User/Security/resetpassword.html.twig',
  183.                 array('etape'=> $etape,'user'=>$user));
  184.             }else{
  185.                 echo 0;
  186.                 exit;
  187.             }
  188.         }else{
  189.             echo 0;
  190.             exit;
  191.         }
  192.     }else if($etape == 3)
  193.     {
  194.         if(isset($_POST['password']) and isset($_POST['id']))
  195.         {
  196.             $repository $em->getRepository(User::class);
  197.             $user $repository->find($_POST['id']);
  198.             $reset_password $session->get('reset_password');
  199.                 
  200.             if($user != null and $reset_password == 1)
  201.             {
  202.                 //sécurisation du mot de passe utilisateur
  203.                 $passuser $_POST['password'];
  204.                 
  205.                 $salt substr(crypt($passuser,''), 016);
  206.                 $user->setSalt($salt);
  207.                 $newpassword $service->encrypt($passuser,$salt);
  208.                 $user->setPassword($newpassword);
  209.                 $em->flush();
  210.                 
  211.                 return $this->render('Theme/Users/User/Security/resetpassword.html.twig',
  212.                 array('etape'=> $etape,'user'=> $user));
  213.             }else{
  214.                 echo 0;
  215.                 exit;
  216.             }
  217.         }else{
  218.             echo 0;
  219.             exit;
  220.         }
  221.     }
  222.     echo 0;
  223.     exit;
  224. }
  225. }