src/Controller/Website/ConnectionScreenController.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Website;
  3. use App\Form\Website\Type\Authentication\ConnectionType;
  4. use App\Form\Website\Type\Authentication\ForgotPasswordType;
  5. use App\Form\Website\Type\Authentication\ResetPasswordType;
  6. use App\Form\Website\Type\Authentication\SubscriptionType;
  7. use App\Helper\Security\SecurityHelper;
  8. use Croisiland\CommonBundle\Provider\SuluUrlProvider;
  9. use Sulu\Component\Content\Compat\StructureInterface;
  10. class ConnectionScreenController extends BaseWebsiteController
  11. {
  12. private const FORM_TYPES = [
  13. 'connection' => ConnectionType::class,
  14. 'connection_commercial_proposition' => ConnectionType::class,
  15. 'forgot_password' => ForgotPasswordType::class,
  16. 'subscription' => SubscriptionType::class,
  17. 'reset_password' => ResetPasswordType::class,
  18. ];
  19. public function __construct(private readonly SuluUrlProvider $suluUrlProvider,
  20. private readonly SecurityHelper $securityHelper)
  21. {
  22. }
  23. public function indexAction(StructureInterface $structure, $preview = false, $partial = false)
  24. {
  25. // Récupération de la requête via le container
  26. $request = $this->container->get('request_stack')->getCurrentRequest();
  27. // Récupération du type de formulaire sélectionné
  28. $formType = null;
  29. try {
  30. $formType = $structure->getPropertyValue('formType');
  31. } catch (\InvalidArgumentException $exception) {
  32. $formType = 'connection'; // Valeur par défaut
  33. }
  34. // Vérification que le type de formulaire existe
  35. if (!isset(self::FORM_TYPES[$formType])) {
  36. $formType = 'connection'; // Fallback sur connection
  37. }
  38. // Création du formulaire correspondant
  39. $formClass = self::FORM_TYPES[$formType];
  40. $form = $this->createForm($formClass);
  41. // Traitement de la soumission du formulaire
  42. if ($request) {
  43. $form->handleRequest($request);
  44. }
  45. // Si le formulaire est soumis et valide
  46. if ($form->isSubmitted() && $form->isValid()) {
  47. }
  48. $emailParam = $request?->query->get('email');
  49. $email = $emailParam !== null
  50. ? (str_contains($emailParam, '@') ? $emailParam : "Erreur : L'email est invalide")
  51. : "Erreur : L'email est manquant";
  52. $attributes = array_merge($this->getSharedLayoutFormViews(), [
  53. 'form' => $form->createView(),
  54. 'formType' => $formType,
  55. 'email' => $email,
  56. ]);
  57. $response = $this->renderStructure(
  58. $structure,
  59. $attributes,
  60. $preview,
  61. $partial
  62. );
  63. if ($this->suluUrlProvider->generateUrl('customer_logout_confirmation') === $request?->getUri()) {
  64. $this->securityHelper->removeCustomerToken($response);
  65. }
  66. return $response;
  67. }
  68. }