| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- <?php
- namespace App\Controller;
- use App\Entity\User;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Annotation\Route;
- 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\Form\Extension\Core\Type\RepeatedType;
- use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
- use Symfony\Component\HttpFoundation\Request;
- class ParametersController extends AbstractController
- {
- #[Route('/profile/{username}/parameters', name: 'parameters')]
- public function index(Request $request, UserPasswordEncoderInterface $encoder): Response
- {
- // Connexion à la BDD et récuperation de l'utilisateur
- $sessionUser = $this->get('session')->get('user');
- $em = $this->getDoctrine()->getManager();
- $repository_profile = $em->getRepository(User::class);
- $sessionUser = $this->get('session')->get('user');
- $profile = $repository_profile->findOneBy(array('username' => $sessionUser));
- // Création du formulaire
- $values = array(
- 'description' => $profile->getDescription(),
- 'profil_prive' => $profile->getIsPrivate(),
- );
- $formBuilder = $this->createFormBuilder($values);
- // Ajout des champs
- $formBuilder
- ->add('mot_de_passe', RepeatedType::class, array(
- 'type' => PasswordType::class,
- 'required' => false,
- 'first_options' => array('label' => 'Changer le mot de passe'),
- 'second_options' => array('label' => 'Répéter le nouveau mot de passe')
- ))
- ->add('description', TextareaType::class, ['required' => false, 'label' => 'Changer la description'])
- ->add('profil_prive', CheckboxType::class, ['required' => false, 'label' => 'Profil privé'])
- ->setAction($this->generateUrl('parameters', array('username' => $sessionUser)));
- // Génération du formulaire
- $form = $formBuilder->getForm();
-
- // Initialisation du message
- $message = "";
- // Si le formulaire modifié est envoyé (POST)
- if ($request->getMethod() == 'POST') {
- $form->handleRequest($request);
- if ($form->isValid()) {
- if ($form->get('mot_de_passe')->getData()) {
- $encoded_passwd = $encoder->encodePassword($profile, $form->get('mot_de_passe')->getData());
- $profile->setPassword($encoded_passwd);
- }
- $profile->setIsPrivate($form->get("profil_prive")->getData());
- $profile->setDescription($form->get('description')->getData());
- $em->persist($profile);
- $em->flush();
- $message = "Profil modifié.";
- }
- }
- return $this->render('parameters/index.html.twig', [
- 'form' => $form->createView(),
- 'username' => $sessionUser,
- 'message' => $message,
- ]);
- }
- }
|