Deprecated: Constant E_STRICT is deprecated in /var/www/PixelForce/vendor/symfony/error-handler/ErrorHandler.php on line 58

Deprecated: Constant E_STRICT is deprecated in /var/www/PixelForce/vendor/symfony/error-handler/ErrorHandler.php on line 76
Symfony Profiler

src/Controller/SecurityController.php line 73

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Manager\UserManager;
  5. use App\Repository\UserRepository;
  6. use App\Services\GenerateKey;
  7. use App\Services\MailerService;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Mailer\MailerInterface;
  12. use Symfony\Component\Mime\Email;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  15. class SecurityController extends AbstractController
  16. {
  17.     /**
  18.      * @var UserRepository
  19.      */
  20.     private $userRepository;
  21.     /**
  22.      * @var MailerService
  23.      */
  24.     private $mailerService;
  25.     /**
  26.      * @var UserManager
  27.      */
  28.     private $userManager;
  29.     public function __construct(UserRepository $userRepositoryMailerService $mailerServiceUserManager $userManager)
  30.     {
  31.         $this->userRepository $userRepository;
  32.         $this->mailerService $mailerService;
  33.         $this->userManager $userManager;
  34.     }
  35.     /**
  36.      * @Route("/login", name="app_login")
  37.      */
  38.     public function login(AuthenticationUtils $authenticationUtilsRequest $request): Response
  39.     {
  40.         // if ($this->getUser()) {
  41.         //     return $this->redirectToRoute('target_path');
  42.         // }
  43.         // get the login error if there is one
  44.         $error $authenticationUtils->getLastAuthenticationError();
  45.         // last username entered by the user
  46.         $lastUsername $authenticationUtils->getLastUsername();
  47.         $agentToken $request->get('agentToken');
  48.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error'agentToken' => $agentToken]);
  49.     }
  50.     /**
  51.      * @Route("/logout", name="app_logout")
  52.      */
  53.     public function logout(): void
  54.     {
  55.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  56.     }
  57.     /**
  58.      * @Route("/forgetPassword", name="app_forgetPassword")
  59.      *
  60.      * @param Request $request
  61.      * @return Response
  62.      */
  63.     public function forgetPassword(Request $requestMailerInterface $mailer)
  64.     {
  65.         if($email $request->request->get('email')) {
  66.            return $this->redirectToRoute('app_regenerCode', [
  67.                'email' => $email,
  68.            ]);
  69.         }
  70.         return $this->render('security/forgetPassword/forgetPassword.html.twig', [
  71.             'error' => $request->query->get('error')
  72.         ]);
  73.     }
  74.     /**
  75.      * @Route("/forgetPassword/regenerCode", name="app_regenerCode")
  76.      */
  77.     public function regenerCode(Request $request)
  78.     {
  79.         if($email $request->query->get('email')) {
  80.             $user =  $this->userManager->generateSixDigitKey($email);
  81.             if($user) {
  82.                 // envoie du code par mail
  83.                 $this->mailerService->sendMailRegenerationCode($user);
  84.                 $this->addFlash('success''Un code vous a été envoyé');
  85.                 return $this->redirectToRoute('app_forgetPassword_getCode', [
  86.                     'id' => $user->getId(),
  87.                     'forgotenPassToken' => $user->getForgottenPassToken()
  88.                 ]);
  89.             }
  90.         }
  91.         return $this->redirectToRoute('app_forgetPassword', [
  92.             'error' => true
  93.         ]);
  94.     }
  95.     /**
  96.      * @route("/forgetPassword/getCode/{id}", name="app_forgetPassword_getCode")
  97.      * @param User $user
  98.      * @param Request $request
  99.      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  100.      */
  101.     public function forgetPasswordGetCode(User $userRequest $request)
  102.     {
  103.         $passToken $request->query->get('forgotenPassToken');
  104.         if($passToken != $user->getForgottenPassToken()) {
  105.             $this->addFlash('danger''la page que vous demandez n\'est plus valide ');
  106.             return $this->redirectToRoute('app_login');
  107.         }
  108.         return $this->render('security/forgetPassword/forgetPassword_getCode.html.twig', [
  109.             'user' => $user
  110.         ]);
  111.     }
  112.     /**
  113.      * @route("/forgetPassword/validateCode/{id}", name="app_forgetPassword_validateCode")
  114.      */
  115.     public function forgetPasswordValidateCode(User $userRequest $request)
  116.     {
  117.         if($user->validateSixDigitCode($request->request->get('sixDigitCode'))) {
  118.             // supprime tout les codes/token
  119.             if($password $request->request->get('password')) {
  120.                $repeatedPass $request->request->get('repeat_password');
  121.                $set $this->userManager->setUserPasword($user$password$repeatedPass);
  122.                if($set) {
  123.                    $this->userManager->clearAllForgottenPassCode($user);
  124.                    $this->addFlash('success''Votre mot de passe a été modifié avec succès');
  125.                    return $this->redirectToRoute('app_login');
  126.                }
  127.                $this->addFlash('danger''Veuillez bien confirmer votre mot de passe');
  128.             }
  129.             return $this->render('security/forgetPassword/forgetPassword_changePasswordForm.html.twig', [
  130.                 'sixDigitCode' => $request->request->get('sixDigitCode')
  131.             ]);
  132.         }
  133.         $this->addFlash('danger''Le code que vous avez entré est invalide');
  134.        return $this->redirectToRoute('app_forgetPassword_getCode', [
  135.            'id' => $user->getId()
  136.        ]);
  137.     }
  138. }