src/Controller/App/SecurityController.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Controller\App;
  3. use App\Entity\User;
  4. use App\Form\RegisterType;
  5. use App\Repository\UserRepository;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Exception;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  12. use Symfony\Component\Mailer\MailerInterface;
  13. use Symfony\Component\Mime\Email;
  14. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  17. class SecurityController extends AbstractController
  18. {
  19.     #[Route('/login'name'login')]
  20.     public function login(AuthenticationUtils $authenticationUtils): Response
  21.     {
  22.         // get the login error if there is one
  23.         $error $authenticationUtils->getLastAuthenticationError();
  24.         // last username entered by the user
  25.         $lastUsername $authenticationUtils->getLastUsername();
  26.         //Vérification de l'autorisation de l'utilisateur
  27.         $user $this->getUser();
  28.         if ($user && !$user->isEnabled()) {
  29.             // Rediriger l'utilisateur vers une page d'activation ou afficher un message d'erreur
  30.             $this->addFlash('error''Votre compte n\'est pas activé. Veuillez contacter l\'administrateur.');
  31.             return $this->redirectToRoute('app_login');
  32.         }
  33.         return $this->render('security/login.html.twig', [
  34.             'last_username' => $lastUsername,
  35.             'error' => $error,
  36.         ]);
  37.     }
  38.     #[Route('/login_check'name'login_check')]
  39.     public function check(Request $request): Response
  40.     {
  41.         $expires $request->query->get('expires');
  42.         $username $request->query->get('user');
  43.         $hash $request->query->get('hash');
  44.         return $this->render('security/check.html.twig', [
  45.             'expires' => $expires,
  46.             'user' => $username,
  47.             'hash' => $hash,
  48.         ]);
  49.     }
  50.     /**
  51.      * @throws Exception
  52.      */
  53.     #[Route('/logout'name'logout'methods: ['GET'])]
  54.     public function logout()
  55.     {
  56.         die;
  57.         // controller can be blank: it will never be called!
  58.         throw new Exception('Don\'t forget to activate logout in security.yaml');
  59.     }
  60.     /**
  61.      * @throws TransportExceptionInterface
  62.      */
  63.     #[Route('/register'name'register'methods: ['GET''POST'])]
  64.     public function register(Request $requestUserPasswordHasherInterface $hasherEntityManagerInterface $entityManagerMailerInterface $mailer,): Response
  65.     {
  66.         $form $this->createForm(RegisterType::class);
  67.         $form->handleRequest($request);
  68.         if ($form->isSubmitted() && $form->isValid()) {
  69.             $nom $form->get('name')->getData();
  70.             $prenom $form->get('surname')->getData();
  71.             $email $form->get('email')->getData();
  72.             $comment $form->get('comment')->getData();
  73.             $password $form->get('password')->getData();
  74.             $existingUser $entityManager->getRepository(User::class)->findOneBy(['email' => $email]);
  75.             if($existingUser) {
  76.                 $this->addFlash('error''Cet email est déjà utilisé. Veuillez choisir un autre email.');
  77.                 return $this->redirectToRoute('app_register');
  78.             }
  79.             $user = new User();
  80.             $user->setName($nom);
  81.             $user->setSurname($prenom);
  82.             $user->setEmail($email);
  83.             $user->setcomment($comment);
  84.             $user->setEnabled(false);
  85.             $password $hasher->hashPassword($user$password);
  86.             $user->setPassword($password);
  87.             $entityManager->persist($user);
  88.             $entityManager->flush();
  89.             $emailContent 'Bonjour, une nouvelle demande d\'accès a été demandée pour DM.Collection de : 
  90.             ' $prenom ' ' $nom ' ' PHP_EOL;
  91.             $emailContent .= 'Adresse e-mail : ' $email .PHP_EOL;
  92.             $emailContent .= 'Commentaire : ' $comment;
  93.             $email = (new Email())
  94.                 ->from('n2msolution.digital@gmail.com')
  95.                 ->to('michelin.david01@gmail.com')
  96.                 //->cc('cc@example.com')
  97.                 //->replyTo('fabien@example.com')
  98.                 ->subject('Nouvelle demande d\'accès')
  99.                 ->text($emailContent)
  100.                 ->html('<p>' nl2br($emailContent) . '</p>');
  101.             $mailer->send($email);
  102.             $this->addFlash('success''flash.register.success');
  103.             return $this->redirectToRoute('app_login');
  104.         }
  105.         return $this->renderForm('security/register.html.twig', [
  106.             'form' => $form,
  107.         ]);
  108.     }
  109.     #[Route('/delete'name'delete')]
  110.     public function delete(User $userEntityManagerInterface $entityManager): Response
  111.     {
  112.         $entityManager->flush();
  113.         $entityManager->remove($user);
  114.         $entityManager->flush();
  115.         return $this->render('security/users.html.twig');
  116.     }
  117.     #[Route('/modify'name'modify')]
  118.     public function modify(User $userEntityManagerInterface $entityManagerUserRepository $userRepository ): Response
  119.     {
  120.         $user->setEnabled(true);
  121.         $entityManager->persist($user);
  122.         $entityManager->flush();
  123.         $users $userRepository->findAll();
  124.         return $this->render('security/users.html.twig', [
  125.         'users' => $users,
  126.             ]);
  127.     }
  128. }