src/Controller/SecurityController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Form\CompanyType;
  5. use App\Form\ResetPasswordType;
  6. use App\Utils\ResponseUtils;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  12. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  13. class SecurityController extends AbstractController
  14. {
  15.     const ENTITY_CLASS User::class;
  16.     const TEMPLATE_DIRECTORY 'security';
  17.     /**
  18.      * @Route("/", name="app_login")
  19.      *
  20.      * @param AuthenticationUtils $authenticationUtils
  21.      * @return Response
  22.      */
  23.     public function login(AuthenticationUtils $authenticationUtils): Response
  24.     {
  25.         if ($this->getUser()) {
  26.              return $this->redirectToRoute('app_dashboard');
  27.         }
  28.         // get the login error if there is one
  29.         $error $authenticationUtils->getLastAuthenticationError();
  30.         // last username entered by the user
  31.         $lastUsername $authenticationUtils->getLastUsername();
  32.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error]);
  33.     }
  34.     /**
  35.      * @Route("/logout", name="app_logout")
  36.      */
  37.     public function logout()
  38.     {
  39.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  40.     }
  41.     /**
  42.      * @Route("/password/forgotten", name="app_password_forgotten")
  43.      *
  44.      * @param Request $request
  45.      * @return Response
  46.      */
  47.     public function passwordForgotten(Request $request\App\Utils\Manager\UserManager $manager) {
  48.         $email $request->request->get('email');
  49.         $sentData false;
  50.         if(!empty($email)) {
  51.             $result $manager->sendEmailForgottenPassword($email);
  52.             $sentData = ($result->getStatus() === Response::HTTP_OK);
  53.         }
  54.         $response = new ResponseUtils();
  55.         return $response
  56.             ->setSuccess('Un mail de réinitialisation a été envoyé')
  57.             ->getJson();
  58.     }
  59.     /**
  60.      * @Route("/password/reset/{passwordToken}", name="app_password_reset")
  61.      *
  62.      * @param Request $request
  63.      * @param \App\Utils\Manager\UserManager $manager
  64.      * @param User $user
  65.      * @return Response
  66.      */
  67.     public function passwordReset(Request $request\App\Utils\Manager\ResetPasswordManager $managerUser $user) {
  68.         //@TODO Check if token timestamp is still active (24h)
  69.         $manager->setEntity($user);
  70.         $validation $manager->execute($request$userResetPasswordType::class, null, static::TEMPLATE_DIRECTORY .'/password_reset.html.twig');
  71.         if($validation === true) {
  72.             $response = new ResponseUtils();
  73.             return $this->redirectToRoute('app_login');
  74.             return $response
  75.                 ->setSuccess('le mot de passe a bien été réinitialisé')
  76.                 ->setRedirection($this->generateUrl('app_login'))
  77.                 ->getJson();
  78.         }
  79.         return $validation;
  80.     }
  81.     /**
  82.      * @Route("/comingsoon", name="app_comingsoon")
  83.      */
  84.     public function comingsoon()
  85.     {
  86.         return $this->render('comingsoon.html.twig');
  87.     }
  88. }