<?php
namespace App\Controller;
use App\Entity\Client;
use App\Entity\Config;
use App\Entity\UserContact;
use App\Form\RegistrationFormType;
use App\Form\SocialRegistrationFormType;
use App\Security\UserContactAuthenticator;
use App\Services\CallApiServices;
use App\Services\QuestionMailService;
// use Doctrine\ORM\EntityManagerInterface; // Supprimé car Doctrine n'est pas utilisé
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
// use ReCaptcha\ReCaptcha; // Include the recaptcha lib - DISABLED
class RegistrationController extends AbstractController
{
/**
* @Route("/register", name="app_register")
*/
public function register(CallApiServices $callApiServices, QuestionMailService $questionMailService, Request $request, UserPasswordHasherInterface $userPasswordHasher, UserAuthenticatorInterface $userAuthenticator, UserContactAuthenticator $authenticator): Response
{
$user = new Client();
$serviceId = $this->getParameter('app.serviceId');
$accountId = $this->getParameter('app.accountId');
$config = $callApiServices->configuratationPlateforme($accountId, $serviceId);
$session = $request->getSession();
$addressIp = $request->getClientIp();
if ($session->get('parrainId') == null) {
$parrainId = "0";
} else {
$parrainId = $session->get('parrainId');
}
$recaptchaKey = $config['recaptchaTab']['sitekey'];
$secretkey = $config['recaptchaTab']['secretkey'];
$messageError = "";
$form = $this->createForm(RegistrationFormType::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// ReCaptcha verification disabled
/*
$recaptcha = new ReCaptcha($secretkey);
$resp = $recaptcha->verify($request->request->get('g-recaptcha-response'), $request->getClientIp());
if (!$resp->isSuccess()) {
// Do something if the submit wasn't valid ! Use the message to show something
$messageError = "Le reCAPTCHA n'a pas été saisi correctement. Réessayez.";
} else {
*/
// encode the plain password
$user->setPassword($form->get('plainPassword')->getData());
$clientInscription = $callApiServices->clientInscription(
$serviceId,
$parrainId,
$user->getGenre(),
$user->getEmail(),
$user->getPassword(),
$user->getLastName(),
$user->getFirstName(),
$user->getPhoneNumber(),
$addressIp
);
// verifier si pas erreur
if (isset($clientInscription['responseCode']) && ($clientInscription['responseCode'] == '403')) {
$this->addFlash("inscription", "Un enregistrement correspondant existe déjà ");
return $this->render('registration/register.html.twig', [
'registrationForm' => $form->createView(),
"recaptchaKey" => $recaptchaKey,
"messageError" => $messageError,
]);
} else {
$user->setCode($clientInscription['code']);
$user->setServiceId($serviceId);
$this->addFlash("inscription", "Vous avez bien été inscrit! Vous allez recevoir un mail afin d'activer votre compte d'un moment à l'autre.
Si vous ne recevez pas le mail, veuillez vérifier dans votre boîte SPAM ou courrier indésirable, s'il s'y trouve !! ");
}
// Envoie de Mail.
$questionMailService->checkMail($user, $request, $accountId, $serviceId, $callApiServices);
return $this->redirectToRoute("app_login");
// } // ReCaptcha verification disabled
}
return $this->render('registration/register.html.twig', [
'registrationForm' => $form->createView(),
"recaptchaKey" => $recaptchaKey,
"messageError" => $messageError,
]);
}
/**
* @Route("/checkRegister", name="app_check")
*/
public function checkRegister(CallApiServices $callApiServices, Request $request, UserPasswordHasherInterface $userPasswordHasher, UserAuthenticatorInterface $userAuthenticator, UserContactAuthenticator $authenticator): Response
{
$validation = [
'serviceId' => $request->get('serviceId'),
'username' => $request->get('username'),
'password' => $request->get('password'),
'code' => $request->get('code')
];
$user = $callApiServices->clientInscriptionValidation($validation['serviceId'], $validation['username'], $validation['password'], $validation['code'], 1);
if (isset($user['responseCode']) && ($user['responseCode'] == '403')) {
$this->addFlash("inscriptionCheck", "Votre compte adéja été activer vous ne pouvez plus l'activé");
} else {
$this->addFlash("inscriptionCheck", "Votre compte a bien été activé, vous pouver désormais profiter de toutes les fonctionnalités de la plateforme.");
}
return $this->redirectToRoute("app_login");
}
}