getUserData($email); return $this->render('user/profil_infos.html.twig', [ 'user' => $user, ]); } /* TODO : Param l'API avec un Serializer pour la lecture du fichier JSON ? */ #[Route('/mon-profil', name: 'app_user', methods: ['GET', 'POST'])] #[IsGranted('ROLE_USER')] public function showProfile( Request $request, EntityManagerInterface $entityManager, FileUploader $fileUploader, KazApiService $apiKazService ): Response { # Récupération de l'utilisateur actuellement connecté $user = $this->getUser(); $kazUser = $apiKazService->getUserData($user->getEmail()); $user = $user->updateFromKazUser($kazUser); //TODO: modifier pour que ça communique avec l'API */ # Création du formulaire lié à l'utilisateur connecté $form = $this->createForm(UserProfileType::class, $user); $form->handleRequest($request); # Traitement si l'utilisateur clique sur "Valider" if ($form->isSubmitted() && $form->isValid()) { /** @var UploadedFile $imageFile */ $imageFile = $form->get('image')->getData(); if ($imageFile) { # Suppression de l'ancienne photo du serveur $fileUploader->delete($user->getPhoto()); # Dépot de la nouvelle photo $newFilename = $fileUploader->upload($imageFile); # Mise à jour de l'utilisateur avec le nouveau nom $user->setPhoto($newFilename); } $alternateEmail = $form->get('alternateEmail')->getData(); $regexEmail = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/'; if(isset($alternateEmail) && preg_match($regexEmail, $alternateEmail)) { $user->setAlternateEmail($form->get('alternateEmail')->getData()); } else { $alternateEmail->addError(new FormError('L\'adresse e-mail n\'est pas valide.')); } $telephone = $form->get('telephone')->getData(); $regexTelephone = '/^[0-9\+\s\.\-\(\)]+$/'; if(isset($telephone) && preg_match($regexTelephone, $telephone)) { $user->setTelephone($telephone); } else { $telephone->addError(new FormError('Le numéro de téléphone n\'est pas valide.')); } # 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 !'); return $this->redirectToRoute('app_user'); } # Affichage de la page return $this->render('user/index.html.twig', [ 'form' => $form->createView(), 'userData' => $user, # TODO : Mettre $userData quand connexion avec API OK ]); } #[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(), ]); } }