src/Controller/HomeController.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  8. use App\Utils\Utils;
  9. use App\Entity\User;
  10. use App\Entity\Question;
  11. use App\Entity\Reponse;
  12. class HomeController extends AbstractController
  13. {
  14.     private $passwordEncoder;
  15.     public function __construct(UserPasswordEncoderInterface $passwordEncoder)
  16.     {
  17.         $this->passwordEncoder $passwordEncoder;
  18.     }
  19.     /**
  20.      * @Route("/", name="home")
  21.      */
  22.     public function index()
  23.     {
  24.         
  25.         return $this->redirectToRoute('app_login');
  26.     }
  27.     /**
  28.      * @Route("/forgot", name="forgot_pwd")
  29.      */
  30.     public function forgotPwd(Request $request)
  31.     {
  32.         $em $this->getDoctrine()->getManager();
  33.         $path=$this->getParameter('log_directory');
  34.         
  35.         if($request->request->get('username')!=null && $request->request->get('username')!=''){
  36.             $user=$em->getRepository(User::class)->findOneByUsername($request->request->get('username'));
  37.             if($user!=null){
  38.                 //get user's responses
  39.                 $responses=$em->getRepository(Reponse::class)->findBy(array('user'=>$user));
  40.                 if($responses==null || count($responses)!=3){
  41.                     return $this->render('security/forgot.html.twig', ['error'=>'Désolé vous ne pouvez poursuivre la procédure car vous n\'avez pas fourni de réponses aux questions secrètes lors de votre première connexion.']);
  42.                 }
  43.                 $questions=array();
  44.                 foreach ($responses as $value) {
  45.                     array_push($questions$value->getQuestion());
  46.                 }
  47.                 return $this->render('security/question.html.twig', ['questions'=>$questions,'user'=>$user]);
  48.             }
  49.             return $this->render('security/forgot.html.twig', ['error'=>'Aucun compte avec ce nom d\'utilisateur n\'a été trouvé, vérifiez votre saisie.']);
  50.         }
  51.         
  52.         return $this->render('security/forgot.html.twig', []);
  53.     }
  54.     /**
  55.      * @Route("/forgot/check", name="response_check")
  56.      */
  57.     public function responseCheck(Request $request)
  58.     {
  59.         $em $this->getDoctrine()->getManager();
  60.         $user=$em->getRepository(User::class)->find($request->request->get('user'));
  61.         //check each response
  62.         $responses=$em->getRepository(Reponse::class)->findBy(array('user'=>$user));
  63.         $resp1=false;
  64.         $resp2=false;
  65.         $resp3=false;
  66.         foreach ($responses as $item) {
  67.             if($item->getQuestion()->getId()==$request->request->get('question1')){
  68.                 if($item->getValeur()==$request->request->get('response1'))
  69.                     $resp1=true;
  70.             }
  71.             else if($item->getQuestion()->getId()==$request->request->get('question2')){
  72.                 if($item->getValeur()==$request->request->get('response2'))
  73.                     $resp2=true;
  74.             }
  75.             else if($item->getQuestion()->getId()==$request->request->get('question3')){
  76.                 if($item->getValeur()==$request->request->get('response3'))
  77.                     $resp3=true;
  78.             }
  79.         }
  80.         if($resp1 && $resp2 && $resp3)
  81.             return $this->render('security/password.html.twig', ['user'=>$user]);
  82.             
  83.         //in case of wrong validation
  84.         $questions=array();
  85.         foreach ($responses as $value) {
  86.             array_push($questions$value->getQuestion());
  87.         }
  88.         return $this->render('security/question.html.twig', ['questions'=>$questions,'user'=>$user,'error'=>'Désolé mais vos réponses ne sont pas correctes, vérifiez les et recommencez.']);
  89.     }
  90.     /**
  91.      * @Route("/forgot/password", name="forgot_password")
  92.      */
  93.     public function passwordForgot(Request $request)
  94.     {
  95.         $em $this->getDoctrine()->getManager();
  96.         $user=$em->getRepository(User::class)->find($request->request->get('user'));
  97.         $user->setPassword($this->passwordEncoder->encodePassword(
  98.             $user,
  99.             $request->request->get('password')
  100.         ));
  101.         $em->persist($user);
  102.         $em->flush();
  103.         return $this->redirectToRoute('app_login');
  104.     }
  105. }