src/Controller/SecurityController.php line 98

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Form\UserType;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use App\Repository\PhotoProduitRepository;
  7. use App\Security\SecurityAuthenticator;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  14. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  15. class SecurityController extends AbstractController
  16. {
  17.     /**
  18.      * @Route("/inscription", name="inscription")
  19.      */
  20.     public function inscription(Request $requestEntityManagerInterface $managerUserPasswordHasherInterface $encoder,UserAuthenticatorInterface $userAuthenticatorSecurityAuthenticator $authenticator,PhotoProduitRepository $repophoto): Response
  21.     {
  22.         $user = new User;
  23.         $form =$this->createForm(UserType::class, $user, ['inscription' => true]);
  24.         // on passe l'option inscription au UserType pour différencoier les builders
  25.         $form->handleRequest($request);
  26.         
  27.         if ($form->isSubmitted() && $form->isValid()) {
  28.             $password=$user->getpassword();
  29.             $hash $encoder->hashPassword($user,$password);
  30.             $user->setPassword($hash);
  31.             $manager->persist($user);
  32.             $manager->flush();
  33.             $userAuthenticator->authenticateUser($user,$authenticator$request);
  34.           
  35.             return $this->redirectToRoute("accueil");
  36.         }
  37.         // on créé un tableau avec les photos pour animer la page
  38.         $photos=$repophoto->findAll();
  39.         $nomphotos = [];
  40.         foreach ( $photos as $photo) {
  41.             $nomPhotos []=$photo->getNom();
  42.         }
  43.         $nomPhotos_str json_encode($nomPhotos) ;
  44.        
  45.         return $this->render('security/inscription.html.twig', [
  46.             "formUser" =>$form->createView(),
  47.             'photos'=>$nomPhotos_str
  48.         ]);
  49.     }
  50.      /**
  51.      * @Route("/admin/inscription", name="inscription_admin")
  52.      */
  53.     public function inscriptionAdmin(Request $requestEntityManagerInterface $managerUserPasswordHasherInterface $encoder,UserAuthenticatorInterface $userAuthenticatorSecurityAuthenticator $authenticator,PhotoProduitRepository $repophoto): Response
  54.     {
  55.         $user = new User;
  56.         $form =$this->createForm(UserType::class, $user, ['inscription' => true]);
  57.         // on passe l'option inscription au UserType pour différencoier les builders
  58.         $form->handleRequest($request);
  59.         
  60.         if ($form->isSubmitted() && $form->isValid()) {
  61.             $password=$user->getpassword();
  62.             $hash $encoder->hashPassword($user,$password);
  63.             $user->setPassword($hash);
  64.             $manager->persist($user);
  65.             $manager->flush();
  66.           
  67.             return $this->redirectToRoute("user_afficher");
  68.         }
  69.         // on créé un tableau avec les photos pour animer la page
  70.         $photos=$repophoto->findAll();
  71.         $nomphotos = [];
  72.         foreach ( $photos as $photo) {
  73.             $nomPhotos []=$photo->getNom();
  74.         }
  75.         $nomPhotos_str json_encode($nomPhotos) ;
  76.        
  77.         return $this->render('security/inscription.html.twig', [
  78.             "formUser" =>$form->createView(),
  79.             'photos'=>$nomPhotos_str
  80.         ]);
  81.     }
  82.      /**
  83.      * @Route("/connexion", name="connexion")
  84.      */
  85.     public function connexion(PhotoProduitRepository $repophoto)
  86.     {
  87.         $photos=$repophoto->findAll();
  88.         $nomphotos = [];
  89.         foreach ( $photos as $photo) {
  90.             $nomPhotos []=$photo->getNom();
  91.         }
  92.         $nomPhotos_str json_encode($nomPhotos) ;
  93.        
  94.         return $this->render("security/connexion.html.twig", [
  95.             'photos'=>$nomPhotos_str
  96.         ]);
  97.     }
  98.       /**
  99.     * @Route("/deconnexion", name="deconnexion")
  100.      */
  101.     public function deconnexion(){
  102.         
  103.     }
  104.      /**
  105.      * Lorsqu'un utilisateur vient de se connecter, il est redirigé sur la fonction roles()
  106.      * security.yaml : default_target_path
  107.      * qui permet de checker le role de l'utilisateur
  108.      * et sera redirigé sur une route en fonction de son rôle 
  109.      * 
  110.      * @Route("/roles", name="roles")
  111.      */
  112.     public function roles(SessionInterface $session)
  113.     { 
  114.     if($session->get('commande')){
  115.         return $this->redirectToRoute("preparer-commande");
  116.     }
  117.         if($this->isGranted('ROLE_ADMIN'))
  118.         {
  119.             return $this->redirectToRoute("accueil");
  120.         }
  121.         elseif($this->isGranted('ROLE_USER'))
  122.         {
  123.             return $this->redirectToRoute("accueil");
  124.         }
  125.         elseif($this->isGranted('ROLE_REV'))
  126.         {
  127.             return $this->redirectToRoute("accueil");
  128.         }
  129.     }
  130. //fin de classe