src/Controller/UserController.php line 134

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 Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\File\Exception\FileException;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Component\HttpFoundation\File\File;
  13. use Symfony\Component\String\Slugger\SluggerInterface;
  14. class UserController extends AbstractController
  15. {
  16.     public function __construct(EntityManagerInterface $managerUserPasswordHasherInterface $passwordHasher)
  17.     {
  18.         $this->manager $manager;
  19.         $this->passwordHasher $passwordHasher;
  20.     }
  21.     /**
  22.      * @Route("/user", name="app_user")
  23.      */
  24.     public function index(Request $requestSluggerInterface $sluger): Response
  25.     {
  26.         // Nouvelle instance d'utilisateur
  27.         $user = new User();
  28.         // Création du formulaire à partir d'une classe issu du fichier UserType.php 
  29.         $form $this->createForm(UserType::class, $user);
  30.         // Traitement du formulaire
  31.         $form->handleRequest($request);
  32.         // Si le formulaire est soumis et validé , alors...
  33.         if ($form->isSubmitted() && $form->isValid()) {
  34.             $emptyPassword $form->get('password')->getData();
  35.             if ($emptyPassword == null) {
  36.                 // recuperer le mdp de l'user en bdd et le renvoyer
  37.                 $user->setPassword($user->getPassword());
  38.             } else {
  39.                 $passwordEncod $this->passwordHasher->hashPassword($user$emptyPassword);
  40.                 $user->setPassword($passwordEncod);
  41.             }
  42.             $photoUser $form->get('photo')->getData();
  43.             if ($photoUser) {
  44.                 $originalFilename pathinfo($photoUser->getClientOriginalName(), PATHINFO_FILENAME);
  45.                 $safeFilename $sluger->slug($originalFilename);
  46.                 $newFilename $safeFilename '-' uniqid() . '.' $photoUser->guessExtension();
  47.                 try {
  48.                     $photoUser->move(
  49.                         $this->getParameter('photo'),
  50.                         $newFilename
  51.                     );
  52.                 } catch (FileException $e) {
  53.                 }
  54.                 $user->setPhoto($newFilename);
  55.             } //else {
  56.             //     dd('Aucune image de competence disponible');
  57.             // }
  58.             // On va hacher le mdp de l'utilisateur 
  59.             // $user->setPassword($this->passwordHasher->hashPassword($user, $user->getPassword()));
  60.             // On persiste l'utilisateur
  61.             $this->manager->persist($user);
  62.             // On flush
  63.             $this->manager->flush();
  64.             // On retourne sur la page d'accueil
  65.             return $this->redirectToRoute('app_home');
  66.         }
  67.         return $this->render('user/index.html.twig', [
  68.             // On passe le formulaire à la vue
  69.             'myUserForm'  => $form->createView(),
  70.         ]);
  71.     }
  72.     /**
  73.      * @Route("/user/update/{id}", name="app_user_update")
  74.      */
  75.     public function updateUser(User $userUpdateRequest $requestSluggerInterface $sluger): Response
  76.     {
  77.         $formUpdate $this->createForm(UserType::class, $userUpdate);
  78.         $formUpdate->handleRequest($request);
  79.         if ($formUpdate->isSubmitted() && $formUpdate->isValid()) {
  80.             // Récuperer le champ du password
  81.             $emptyPassword $formUpdate->get('password')->getData();
  82.             // Quand le port lunaire est soumis, vérifier que le champ password, 
  83.             // S'il est vide, alors on recupère le mot de passe à l'utilisateur à modifier et on le renvoi
  84.             if ($emptyPassword == null) {
  85.                 // recuperer le mdp de l'user en bdd et le renvoyer
  86.                 $userUpdate->setPassword($userUpdate->getPassword());
  87.             } else {
  88.                 $passwordEncod $this->passwordHasher->hashPassword($userUpdate$emptyPassword);
  89.                 $userUpdate->setPassword($passwordEncod);
  90.             }
  91.             $photoUser $formUpdate->get('photo')->getData();
  92.             if ($photoUser) {
  93.                 $originalFilename pathinfo($photoUser->getClientOriginalName(), PATHINFO_FILENAME);
  94.                 $safeFilename $sluger->slug($originalFilename);
  95.                 $newFilename $safeFilename '-' uniqid() . '.' $photoUser->guessExtension();
  96.                 try {
  97.                     $photoUser->move(
  98.                         $this->getParameter('photo'),
  99.                         $newFilename
  100.                     );
  101.                 } catch (FileException $e) {
  102.                 }
  103.                 $userUpdate->setPhoto($newFilename);
  104.             } //else {
  105.             //     dd('Aucune image de competence disponible');
  106.             // }
  107.             $this->manager->persist($userUpdate);
  108.             $this->manager->flush();
  109.             return $this->redirectToRoute('app_user');
  110.         }
  111.         return $this->render('user/updateUser.html.twig', ['updateUser' => $formUpdate->createView(),]);
  112.     }
  113.     /**
  114.      * @Route("/all/users", name="app_all_presentation_Vue")
  115.      */
  116.     public function allUsers(): Response
  117.     {
  118.         $users $this->manager->getRepository(User::class)->findAll();
  119.         // Verifier que la variable a bien recu les données cherchés dans la BDD
  120.         return $this->render('user/allUsersVue.html.twig', [
  121.             // Matérialise l'affichage du formulaire
  122.             'users' => $users,
  123.         ]);
  124.     }
  125. }