fileUploader = $fileUploader; $this->profileRepo = $profileRepo; } #[Route('/profile/{uuid}', name: 'profile_view', methods: ['GET'])] public function viewProfile(string $uuid, ParticipantRepository $profileRepo, TokenStorageInterface $tokenStorage): Response { $token = $tokenStorage->getToken(); $userConnect = $token?->getUser(); $currentProfile = $profileRepo->findOneBy(['idParticipant' => $uuid]); if ($userConnect->getIdParticipant() !== $currentProfile->getIdParticipant()) { $this->addFlash('error', "Vous ne pouvez pas consulter un profil qui n'est pas le votre"); return $this->redirectToRoute('home'); } return $this->render('profile/view.html.twig', [ 'profile' => $currentProfile, ]); } #[Route('/profile/edit/{uuid}', name: 'profile_edit', methods: ['GET', 'POST'])] public function editProfile(string $uuid, Request $request, TokenStorageInterface $tokenStorage): Response { try { $token = $tokenStorage->getToken(); $userConnect = $token?->getUser(); $profile = $this->profileRepo->findOneBy(['idParticipant' => $uuid]); if ($userConnect->getIdParticipant() !== $profile->getIdParticipant()) { $this->addFlash('error', "Vous ne pouvez pas modifier un profil qui n'est pas le votre"); return $this->redirectToRoute('home'); } $form = $this->createForm(ProfileFormType::class, $profile); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $imageFile = $form->get('image')->getData(); if (($form->has('deleteImage') && $form['deleteImage']->getData()) || $imageFile) { $this->fileUploader->delete($profile->getFileName(), '/upload/image/profile'); if ($imageFile) { $imageFilename = $this->fileUploader->upload($imageFile); $profile->setFileName($imageFilename); } else { $profile->setFileName(null); } } if ($form->has('newPassword') && $form->has('confirmPassword')) { if ($form->get('newPassword')->getData() !== $form->get('confirmPassword')->getData()) { $this->addFlash('error', "Les mots de passe ne correspondent pas"); return $this->render('profile/edit.html.twig', [ 'formProfile' => $form, ]); } $profile->setPassword($form->get('newPassword')->getData()); } if ($form->has('pseudo')) { $alreadyExists = $this->profileRepo->findOneBy(['pseudo' => $profile->getPseudo()]); if ($alreadyExists && $alreadyExists !== $profile) { $this->addFlash('error', "Ce pseudo existe déjà"); return $this->render('profile/edit.html.twig', [ 'formProfile' => $form, ]); } } if ($form->has('email')) { $alreadyExists = $this->profileRepo->findOneBy(['email' => $profile->getEmail()]); if ($alreadyExists && $alreadyExists !== $profile) { $this->addFlash('error', "Cet email existe déjà"); return $this->render('profile/edit.html.twig', [ 'formProfile' => $form, ]); } } $profileToUpdate = $this->profileRepo->update($profile); if (!$profileToUpdate) { throw $this->createNotFoundException('No profile found'); } $this->addFlash('success', 'Votre profile est bien à jour'); return $this->redirectToRoute('profile_view',['uuid' => $profile->getIdParticipant()]); } return $this->render('profile/edit.html.twig', [ 'formProfile' => $form, ]); } catch(\Exception $e) { $formProfile = $this->createForm(ProfileFormType::class, $profile); $this->addFlash('error', $e->getMessage()); return $this->render('profile/edit.html.twig', ['formProfile' => $formProfile]); } } }