<?php
namespace App\Controller;
use App\Form\ContactType;
use App\Entity\Contact;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\Routing\Annotation\Route;
use App\Service\GoogleRecaptchaService;
class ContactController extends AbstractController
{
#[Route('/contact', name: 'contact')]
public function contact(Request $request, MailerInterface $mailer, GoogleRecaptchaService $recaptchaService): Response
{
$contact = new Contact();
$form = $this->createForm(ContactType::class, $contact);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$recaptchaResponse = $request->get('g-recaptcha-response');
$userIp = $request->getClientIp();
// Vérifier la validité de reCAPTCHA
if (!$recaptchaResponse || !$recaptchaService->verify($recaptchaResponse, $userIp)) {
$this->addFlash('error', 'La validation reCAPTCHA a échoué. Veuillez réessayer.');
return $this->redirectToRoute('contact');
}
// Envoi de l'email
$email = (new Email())
->from('commande.yobaale@gmail.com')
->to('commande.yobaale@gmail.com') // Remplacez par l'adresse de destination
->replyTo($contact->getEmail())
->subject($contact->getSubject())
->text($contact->getMessage());
$mailer->send($email);
// Message de confirmation
$this->addFlash('success', 'Votre message a été envoyé avec succès.');
// Redirection après envoi
return $this->redirectToRoute('contact');
}
return $this->render('contact/contact.html.twig', [
'form' => $form->createView(),
]);
}
}