|
|
@@ -0,0 +1,75 @@
|
|
|
+<?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,
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+}
|