src/Controller/Nordinfo/AccountController.php line 109

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Nordinfo;
  3. use App\Entity\Footer;
  4. use App\Entity\MenuLibelle;
  5. use App\Entity\User;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Contracts\Translation\TranslatorInterface;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  13. /**
  14.  * @method User getUser()
  15.  */
  16. #[Route(host"nordinfo.spontaneit.fr")]
  17. //#[Route(host: "info.lenord.fr")]
  18. class AccountController extends AbstractController
  19. {
  20.   protected mixed $params = [];
  21.   public function __construct(
  22.     private EntityManagerInterface $em,
  23.     private TranslatorInterface $translator
  24.   ) {
  25.     $this->params['is_pdf'] = 0;
  26.     $this->getMenusTop();
  27.     $this->getMenusProfile();
  28.     $this->params['footer'] = $this->em->getRepository(Footer::class)->find(1);
  29.   }
  30.   public function login(Request $requestAuthenticationUtils $auth_util): Response
  31.   {
  32.     $this->params['locale'] = $this->translator->getLocale();
  33.     $user $this->getUser();
  34.     if ($user !== null) {
  35.       if ($user->getRole() == 'lecteur') {
  36.         return $this->redirectToRoute('index');
  37.       }
  38.       return $this->redirectToRoute('admin');
  39.     }
  40.     $exception $auth_util->getLastAuthenticationError();
  41.     $this->params['error'] = $exception $exception->getMessage() : NULL;
  42.     $this->params['lang'] = $this->translator->getLocale();
  43.     $this->params['show_screen_loader'] = 1;
  44.     return $this->render('Nordinfo/Main/login.html.twig'$this->params);
  45.   }
  46.   private function getMenusTop(): void
  47.   {
  48.     $this->params['menusTop'] = $this->em->getRepository(MenuLibelle::class)->findBy(['ordre' => 0]);
  49.   }
  50.   private function getMenusProfile(): void
  51.   {
  52.     $this->params['menusprofile'] = $this->em->getRepository(MenuLibelle::class)
  53.       ->getMenuProfile();
  54.   }
  55.   #[Route(path'/compte-cree/{token}'name'user_activate')]
  56.   public function activateUser(?string $token): Response
  57.   {
  58.     $user $this->em->getRepository(User::class)->findOneBy(['token_activation' => $token]);
  59.     if ($user == null) {
  60.       $this->params['message'] = 'Compte déjà activé ou inexistant';
  61.       return $this->render('Nordinfo/Main/endformerror.html.twig'$this->params);
  62.     }
  63.     $user->setTokenActivation(null)
  64.       ->setActive(true);
  65.     $this->em->persist($user);
  66.     $this->em->flush();
  67.     $this->params['message'] = "Grâce à mon compte, <b>mes préférences</b> (lieux de vie, centres d'intérêt) et <b>mes paramètres personnels</b> seront conservés quel que soit le terminal de consultation (smartphone, tablette, ordinateur), de même pour mes contenus mis en favoris. Vous pouvez également <a href='/proposer-un-evenement'>proposer un événement</a> dans l’agenda.";
  68.     if ($user->getRole() == "vip") {
  69.       $this->params['message'] = "Grâce à mon compte, mes préférences (mes lieux de vie, mes centres d’intérêt) et mes paramètres personnels (affichage, favoris) seront conservés quel que soit mon terminal de consultation (smartphone, tablette, ordinateur). Je peux également <a href='/proposer-un-evenement'>proposer un événement</a> dans l’agenda. 
  70.       Mon profil premium me permet d'accéder à des contenus exclusifs ou en avant-première.
  71.       Ces contenus sont indiqués par un cadenas vert dans L'info, Vidéos et dans Mes actus.";
  72.     }
  73.     return $this->render('Nordinfo/Main/endregister.html.twig'$this->params);
  74.   }
  75.   #[Route(path'/modifier-mot-de-passe'name'modifier_password')]
  76.   public function password_edit(): Response
  77.   {
  78.     if ($this->getUser() == null) {
  79.       return $this->redirect('info');
  80.     }
  81.     return $this->render('Nordinfo/Main/password_edit.html.twig'$this->params);
  82.   }
  83.   #[Route(path'/modifier-nom'name'modifier_nom')]
  84.   public function name_edit(): Response
  85.   {
  86.     if ($this->getUser() == null) {
  87.       return $this->redirect('info');
  88.     }
  89.     return $this->render('Nordinfo/Main/name_edit.html.twig'$this->params);
  90.   }
  91.   #[Route(path'/password_reset/{token}'name'password_reset')]
  92.   public function password_reset(?string $token): Response
  93.   {
  94.     $test $this->em->getRepository(User::class)->findOneBy(['token_reset' => $token]);
  95.     if ($test != false && $token != '') {
  96.       $this->params['email'] = $test->getEmail();
  97.       $this->params['token'] = $token;
  98.       return $this->render('Nordinfo/Main/password_reset.html.twig'$this->params);
  99.     }
  100.     return $this->redirectToRoute('admin');
  101.   }
  102.   #[Route(path'/oubli-mot-de-passe'name'password_forgot')]
  103.   public function password_forgot(): Response
  104.   {
  105.     return $this->render('Nordinfo/Main/password_forgot.html.twig'$this->params);
  106.   }
  107.   #[Route(path'/oubli-mot-de-passe-success/{email}'name'password_forgot_success')]
  108.   public function password_forgot_success(?string $email): Response
  109.   {
  110.     $this->params['show_menu'] = 0;
  111.     $this->params['message'] = "Un courriel vient d'être envoyé à " $email;
  112.     $this->params['subtitle'] = 'Nous envoyons ce courriel pour vérifier que vous êtes bien le titulaire de l\'adresse correspondante. <br/>Cliquez sur le lien qu\'il contient pour et laissez-vous guider pour définir un nouveau mot de passe.';
  113.     return $this->render('Nordinfo/Main/endpassword.html.twig'$this->params);
  114.   }
  115.   #[Route(path'/account_remove_success'name'account_remove_success')]
  116.   public function removeAccountSuccess(): void
  117.   {
  118.   }
  119.   #[Route(path'/reinitialisation_reussie'name'password_reset_success')]
  120.   public function password_reset_success(): Response
  121.   {
  122.     $this->params['show_menu'] = 0;
  123.     $this->params['show_connect_button'] = 1;
  124.     $this->params['message'] = 'Mon mot de passe a bien été modifié';
  125.     $this->params['subtitle'] = '';
  126.     return $this->render('Nordinfo/Main/endpassword.html.twig'$this->params);
  127.   }
  128.   #[Route(path'/supprimer-mon-compte'name'account_remove')]
  129.   public function removeAccount(): Response
  130.   {
  131.     //    if ($this->getUser() == null) {
  132.     //      return $this->redirect('info');
  133.     //    }
  134.     return $this->render('Nordinfo/Main/remove_account.html.twig'$this->params);
  135.   }
  136. }