<?php
namespace App\Controller\Auth;
use App\Form\Registration\RegistrationFormType;
use App\Services\Api\Auth\AuthService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
class RegistrationController extends AbstractController
{
private $authService;
public function __construct(AuthService $authService)
{
$this->authService = $authService;
}
/**
* @throws TransportExceptionInterface
* @throws ServerExceptionInterface
* @throws RedirectionExceptionInterface
* @throws ClientExceptionInterface
*/
#[Route('/register', name: 'app_register')]
public function registration(Request $request): Response
{
$form = $this->createForm(RegistrationFormType::class);
// Traiter la soumission du formulaire
$form->handleRequest($request);
// Soumission du formulaire et validation
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$body=[
"email" => $form->get('email')->getData(),
"password" => $form->get('password')->getData(),
"lastname" => $form->get('lastname')->getData(),
"firstname" => $form->get('firstname')->getData()
];
$response = $this->authService->postRegistration($body);
$statusCode = $response->getStatusCode();
if ($statusCode === 200 || $statusCode === 201) {
$this->addFlash("success", "Votre Compte a été crée avec success");
return $this->redirectToRoute('app_login');
}else{
$this->addFlash("danger", json_decode($response->getContent(false), true)['message']);
return $this->redirectToRoute('app_register');
}
}
return $this->render('frontend/registration/register.html.twig', [
'form' => $form->createView(),
]);
}
}