src/Controller/SecurityController.php line 30

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Parametre;
  4. use App\Entity\User;
  5. use App\Form\RegistrationType;
  6. use Symfony\Component\Mime\Address;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\Mailer\MailerInterface;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  15. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  16. class SecurityController extends AbstractController
  17. {
  18.     
  19.     /**
  20.      * Connexion utilisateur
  21.      * @param AuthenticationUtils $authenticationUtils
  22.      * @return Response Réponse 
  23.      */
  24.     #[Route("/login"name"app_login"methods: ['GET''POST'])]
  25.     #[Route("/espaceclient/espaceClient"name"app_login_atlantic"methods: ['GET''POST'])]
  26.     public function login(AuthenticationUtils $authenticationUtilsRequest $requestEntityManagerInterface $entityManager): Response
  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.         // on vérifie si le site est en train de faire un import
  33.         $parametreRepository $entityManager->getRepository(Parametre::class);
  34.         $parametre $parametreRepository->findOneBy([
  35.             'type'=> "IMPORT",
  36.             'code'=> 1,
  37.         ]);
  38.         if($parametre === null)
  39.             $bMaintenance false;
  40.         else
  41.             $bMaintenance true;
  42.         return $this->render('pages/security/login.html.twig'
  43.             [
  44.                 'last_username' => $lastUsername,
  45.                 'error' => $error,
  46.                 'bMaintenance' => $bMaintenance,
  47.                 'login' => $request->query->get('Login'),
  48.                 'password' => $request->query->get('Password'),
  49.                 'URLretour' => $request->query->get('HOOK_URL'),
  50.                 'returntarget' => $request->query->get('returntarget'),
  51.                 'autosubmit' => $request->query->get('Login') == '26595' || $request->query->get('Login') == '26857' true false
  52.             ]
  53.         );
  54.     }
  55.     #[Route(path'/logout'name'app_logout')]
  56.     public function logout(): void
  57.     {
  58.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  59.     }
  60.     /**
  61.      * Inscription d'un nouveau compte
  62.      *
  63.      * @param  Request $request 
  64.      * @param  EntityManagerInterface $manager
  65.      * @param  MailerInterface $mailer
  66.      * @return Response
  67.      */
  68.     #[Route("/registration"name"security.registration")]
  69.     public function registration(Request $requestEntityManagerInterface $managerMailerInterface $mailerUserPasswordHasherInterface $passwordHasher): Response
  70.     {
  71.         $user = new User($passwordHasher);
  72.         // Ajout du rôle USER
  73.         $user->setRoles(['ROLE_USER']);
  74.         $user->setEnabled(false);
  75.         $form $this->createForm(RegistrationType::class, $user);
  76.         $form->handleRequest($request);
  77.         if ($form->isSubmitted() && $form->isValid()) {
  78.             $user $form->getData();
  79.             $manager->persist($user);
  80.             $manager->flush();
  81.             $this->addFlash(
  82.                 'success',
  83.                 'Thank you for your registration. 
  84.                 After your registration has been confirmed by administrator, you will be able to connect to AirScout mobile app.'
  85.             );
  86.             $email = (new TemplatedEmail())
  87.                 ->from(new Address($this->getParameter('app.email_from'), ''))
  88.                 ->to($this->getParameter('app.email_administrateur'))
  89.                 ->subject('New user to be activated')
  90.                 ->htmlTemplate('emails/user/emailAdminNewUser.html.twig')
  91.                 ->context([
  92.                     'user' => $user,
  93.                 ]);
  94.             $mailer->send($email);
  95.             return $this->render('pages/security/registrationok.html.twig', [
  96.                 'form' => $form->createView()
  97.             ]);
  98.         }
  99.         return $this->render('pages/security/registration.html.twig', [
  100.             'form' => $form->createView()
  101.         ]);
  102.     }
  103.    
  104. }