src/Controller/RegisterController.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Form\RegisterType;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  10. use App\Classe\Mail;
  11. class RegisterController extends AbstractController
  12. {
  13. private $entityManager;
  14. public function __construct(EntityManagerInterface $entityManager){
  15. $this->entityManager = $entityManager;
  16. }
  17. /**
  18. * @Route("/inscription", name="register")
  19. */
  20. public function index(Request $request, UserPasswordEncoderInterface $encoder)
  21. {
  22. $notification = null;
  23. $user = new User();
  24. $form = $this->createForm(RegisterType::class, $user);
  25. $form->handleRequest($request);
  26. if($form->isSubmitted() && $form->isValid()){
  27. $user = $form->getData();
  28. // Vérifier si l'utilisateur n'est pas déjà existant en db
  29. $search_email = $this->entityManager->getRepository(User::class)->findOneByEmail($user->getEmail());
  30. if(!$search_email){
  31. // Crypter le mot de passe avec la sécurité Symfony
  32. $password = $encoder->encodePassword($user, $user->getPassword());
  33. // Réinjecter le password cryptté dans l'objet user
  34. $user->setPassword($password);
  35. // Enregistrer les informations dans la base de données
  36. // Appeler Doctrine : $doctrine = $this->getDoctrine()->getManager();
  37. $this->entityManager->persist($user);
  38. $this->entityManager->flush();
  39. $mail = new Mail();
  40. $content = "Bonjour ".$user->getFirstName()."<br>Bienvenu sur la première boutique dédiée aux produits belges.<br><br>";
  41. $mail->send($user->getEmail(), $user->getFirstName(), 'Bienvenu sur La Boutique Belge', $content);
  42. $notification = "Votre inscription s'est correctement déroulée. Vous pouvez dès à présent vous connecter à votre compte";
  43. } else{
  44. $notification = "L'email que vous avez renseigné existe déjà";
  45. }
  46. }
  47. return $this->render('register/index.html.twig',[
  48. 'form' => $form -> createView(),
  49. 'notification' => $notification
  50. ]);
  51. }
  52. }