src/Controller/SecurityController.php line 73

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\CGV;
  4. use App\Entity\ResetPassword;
  5. use App\Enum\MediaEnum;
  6. use App\Repository\CGVRepository;
  7. use App\Repository\Configuration\MediaRepository;
  8. use App\Repository\UserRepository;
  9. use App\Service\MailerService;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  16. use Symfony\Contracts\Translation\TranslatorInterface;
  17. class SecurityController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/{_locale}/index", name="app_index", options={"expose"=true})
  21.      */
  22.     public function index(Request $requestMediaRepository $repository): Response
  23.     {
  24.         
  25.         $user $this->getUser();
  26.         
  27.         if($user) {
  28.             return $this->redirectToRoute("home_secure");
  29.         }
  30.         
  31.         return $this->render('security/index.html.twig');
  32.     }
  33.     /**
  34.      * @Route("/{_locale}/login", name="app_login", options={"expose"=true})
  35.      */
  36.     public function login(AuthenticationUtils $authenticationUtils): Response
  37.     {
  38.         if ($this->getUser()) {
  39.             return $this->redirectToRoute('home_secure');
  40.         }
  41.         // get the login error if there is one
  42.         $error $authenticationUtils->getLastAuthenticationError();
  43.         // last username entered by the user
  44.         $lastUsername $authenticationUtils->getLastUsername();
  45.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error]);
  46.     }
  47.     
  48.     /**
  49.      * @return Response
  50.      * @Route("/{_locale}/term/{type}", name="term_for_rgpd")
  51.      */
  52.     public function termRgpd(Request $requestCGVRepository $CGVRepository$type) {
  53.         switch ($type) {
  54.             case CGV::PRIVACY_POLICY:
  55.                 return $this->render("security/term/privaty.html.twig");
  56.             case CGV::TERM_SERVICE:
  57.                 return $this->render("security/term/condition-general.html.twig");
  58.         }
  59.         return $this->render("security/term/privaty.html.twig");
  60.     }
  61.     
  62.     /**
  63.      * @return Response
  64.      * @Route("/{_locale}/forgot-password/", name="forgot_password")
  65.      */
  66.     public function forgotPassword(Request $requestEntityManagerInterface $managerUserRepository $userRepositoryTranslatorInterface $translatorMailerService $mailerService) {
  67.         $email null;
  68.         if($request->isMethod("post")) {
  69.             $email $request->get("email");
  70.             
  71.             if(is_null($email) || $email == "") {
  72.                 return $this->redirectToRoute("forgot_password");
  73.             }
  74.             
  75.             $user $userRepository->findOneBy(["email" => $email]);
  76.             
  77.             if(!$user) {
  78.                 $this->addFlash('error'$translator->trans('message.error.not_found_email', [], 'general'));
  79.             } else {
  80.                 $passwordToken = new ResetPassword();
  81.                 $passwordToken->setEmail($email);
  82.                 $manager->persist($passwordToken);
  83.             
  84.                 $subject "RĂ©initialisation du mot de passe";
  85.             
  86.                 $mailerService->sendEmail($email$subject'email/password/template-reset-password.html.twig', [
  87.                     "token" => $passwordToken->getToken(),
  88.                     "user" => $user
  89.                 ]);
  90.             
  91.                 $manager->flush();
  92.                 $this->addFlash('success'$translator->trans('message.success.reset_password', ['%email%' => $user->getEmail()], 'general'));
  93.                 return $this->redirectToRoute("forgot_password");
  94.             }
  95.         }
  96.         return $this->render("security/forgot-password.html.twig", [
  97.             "email" => $email
  98.         ]);
  99.     }
  100.     
  101.     /**
  102.      * @param Request $request
  103.      * @param MailerService $mailerService
  104.      * @return Response
  105.      * @Route("/{_locale}/contact/", name="contact")
  106.      */
  107.     public function sendMessage(Request $requestMailerService $mailerServiceTranslatorInterface $translator) {
  108.         if($request->isMethod('post')) {
  109.             $email $request->get("email");
  110.             $subject $request->get("subject");
  111.             $message $request->get("message");
  112.             
  113.             $mailerService->sendEmailFromContactForm($subject$email$message);
  114.             $this->addFlash('success'$translator->trans('message.success.message_sent', [], 'general'));
  115.             return $this->redirectToRoute("contact");
  116.         }
  117.         return $this->render('security/contact.html.twig');
  118.     }
  119.     /**
  120.      * @Route("{_locale}/logout", name="app_logout")
  121.      */
  122.     public function logout(Request $request): void
  123.     {
  124.         $this->redirectToRoute("app_login", ["_locale" => $request->getLocale()]);
  125.     }
  126. }