getUser(); // Vérification si l'URL est en mode édition $isEditMode = $request->query->getBoolean('edit', false); try { // Récupération des données de l'utilisateur sur l'API grâce à son email $kazUser = $apiKazService->getUserData($user->getEmail()); // Initialisation de la variable $userData $user = $user->updateFromKazUser($kazUser); } catch (Exception $e) { $this->addFlash('error', 'Impossible de charger vos données.' . $e->getMessage()); } // Création du formulaire lié à l'utilisateur connecté $form = $this->createForm(UserProfileType::class, $user); $form->handleRequest($request); // Affichage du formulaire si les données sont valides if ($form->isSubmitted() && $form->isValid()) { /** @var UploadedFile|null $imageFile */ $imageFile = $form->get('image')->getData(); // --- Gestion de l'image de profil --- if ($imageFile) { // Suppression de l'ancienne image via le service if ($user->getImage()) { $fileUploader->delete($user->getImage()); } // Dépôt de la nouvelle image et mise à jour de son nom dans l'entité $newFilename = $fileUploader->upload($imageFile); $user->setImage($newFilename); } // --- Fin gestion de l'image de profil --- // Synchronisation des données avec l'API $kazUser = $user->convertToKazUser(); try { $apiKazService->updateUserData($user->getEmail(), $kazUser); } catch (Exception $e) { $this->addFlash('error', 'Impossible de mettre à jour votre profil' . $e->getMessage()); } // Sauvegarde en base de données $entityManager->flush(); // Message de confirmation et rechargement de la page $this->addFlash('success', 'Votre profil a été mis à jour avec succès !'); // Redirection de l'utilisateur return $this->redirectToRoute('app_user'); } // Affichage de la page return $this->render('user/index.html.twig', [ 'form' => $form->createView(), 'userData' => $user, 'isEditMode' => $isEditMode, ]); } #[Route('/mot-de-passe', name: 'app_user_edit_password', methods: ['GET', 'POST'])] public function editPassword( Request $request, UserPasswordHasherInterface $hasher, EntityManagerInterface $entityManager ): Response { // Création du formulaire $form = $this->createForm(ChangePasswordType::class); // Liaison du formulaire à la requête HTTP $form->handleRequest($request); // Vérification du formulaire, s'il est bien soumis et valide if ($form->isSubmitted() && $form->isValid()) { // Récupération des données du formulaire $user = $this->getUser(); $plainOldPassword = $form->get('oldPassword')->getData(); $newPassword = $form->get('newPassword')->getData(); // Vérification de l'ancien mot de passe if (!$hasher->isPasswordValid($user, $plainOldPassword)) { $form->get('oldPassword')->addError(new FormError('L\'ancien mot de passe est incorrect.')); } else { // Si tout est OK : Hachage du mot de passe $hashedPassword = $hasher->hashPassword($user, $newPassword); $user->setPassword($hashedPassword); // Sauvegarde en BDD $entityManager->flush(); // Message de succès pour l'utilisateur $this->addFlash('success', 'Votre mot de passe a bien été mis à jour !'); return $this->redirectToRoute('app_user_edit_password'); } } return $this->render('user/edit_password.html.twig', [ 'form' => $form->createView(), ]); } }