| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- namespace App\Controller;
- use App\Entity\User;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Annotation\Route;
- use Symfony\Component\Form\Extension\Core\Type\TextType;
- use Symfony\Component\Form\Extension\Core\Type\PasswordType;
- use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
- use Symfony\Component\Form\Extension\Core\Type\TextareaType;
- use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
- class RegisterController extends AbstractController
- {
- /**
- * @Route("/register", name="register")
- */
- public function index(Request $request, UserPasswordEncoderInterface $encoder): Response
- {
- $session = $this->get('session');
- if (null !== $session->get('user')) {
- $session->save();
- return $this->redirectToRoute('home');
- }
- $user = new User();
- // Instanciation du fromBuilder
- $formBuilder = $this->createFormBuilder();
- // Ajout des champs
- $formBuilder
- ->add('identifiant', TextType::class)
- ->add('mot_de_passe', RepeatedType::class, array(
- 'type' => PasswordType::class,
- 'first_options' => array('label' => 'Mot de passe'),
- 'second_options' => array('label' => 'Répéter le mot de passe')
- ))
- ->add('description', TextareaType::class, ['required' => false])
- ->add('profil_prive', CheckboxType::class, ['required' => false])
- ->setAction($this->generateUrl('register'));
- // Génération du formulaire
- $form = $formBuilder->getForm();
- if ($request->getMethod() == 'POST') {
- $form->handleRequest($request);
- if ($form->isValid()) {
- $chosen_username = $form->get("identifiant")->getData();
- $em = $this->getDoctrine()->getManager();
- $repository_profile = $em->getRepository(User::class);
- $profile = $repository_profile->findOneBy(array('username' => $chosen_username));
- if ($profile) {
- return $this->render('register/index.html.twig', [
- 'message' => "Nom d'utilisateur déjà existant",
- 'form' => $form->createView()
- ]);
- }
- $user->setUsername($form->get("identifiant")->getData());
- $encoded_passwd = $encoder->encodePassword($user, $form->get('mot_de_passe')->getData());
- $user->setPassword($encoded_passwd);
- $user->setIsPrivate($form->get("profil_prive")->getData());
- $user->setDescription($form->get('description')->getData());
- $em->persist($user);
- $em->flush();
- return $this->redirectToRoute('index');
- }
- }
- return $this->render('register/index.html.twig', [
- 'form' => $form->createView(),
- 'message' => ""
- ]);
- }
- }
|