Jump to content

Problème gestion message d'erreur page d'inscription PrestaShop 1.7.8.7


Recommended Posts

Bonjour tout le monde, j'ai implémenter un système de reCAPTCHA v2 sur la page du formulaire de contact qui fonctionne très bien, ainsi que la vérification de réponse avec un système de message d'erreur comme ci-dessous :

image.png.67229df93e3c5925d998eb5f7a0d633d.png

 

J'ai donc voulu reproduire le même schéma sur le formulaire de création utilisateur, le recaptcha fonctionne, ainsi que sa vérification, mais j'ai un petit soucis lorsque je soumet le formulaire sans remplir le reCAPTCHA, la page devrait renvoyer une erreur comme celle du formulaire de contact, mais non, voici mon test :

image.thumb.png.21c2fbbe8b2a0aec2acb54f2f490df24.png

 

Et lorsque j'envoie le formulaire d'inscription j'ai cette page :

 

image.thumb.png.ca9eb27a3e2a96f220575d6370955ef2.png

 

PS: si je rempli le recaptcha, l'enregistrement utilisateur fonctionne parfaitement, c'est le système d'erreur lors de la vérification qui ne fonctionne pas, pourtant j'ai repris le même que sur la page de formulaire de contact, voici le fichier AuthController.php qui vérifie la réponse recaptcha et renvoie les erreurs :

 

<?php
/**
 * Copyright since 2007 PrestaShop SA and Contributors
 * PrestaShop is an International Registered Trademark & Property of PrestaShop SA
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.md.
 * It is also available through the world-wide-web at this URL:
 * https://opensource.org/licenses/OSL-3.0
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to [email protected] so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
 * versions in the future. If you wish to customize PrestaShop for your
 * needs please refer to https://devdocs.prestashop.com/ for more information.
 *
 * @author    PrestaShop SA and Contributors <[email protected]>
 * @copyright Since 2007 PrestaShop SA and Contributors
 * @license   https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
 */
class AuthControllerCore extends FrontController
{
    public $ssl = true;
    public $php_self = 'authentication';
    public $auth = false;

    public function checkAccess()
    {
        if ($this->context->customer->isLogged() && !$this->ajax) {
            $this->redirect_after = ($this->authRedirection) ? urlencode($this->authRedirection) : 'my-account';
            $this->redirect();
        }

        return parent::checkAccess();
    }

    public function initContent()
    {
        $should_redirect = false;

        if (Tools::isSubmit('submitCreate') || Tools::isSubmit('create_account')) {

            $register_form = $this
                ->makeCustomerForm()
                ->setGuestAllowed(false)
                ->fillWith(Tools::getAllValues());



            if (Tools::isSubmit('submitCreate')) {
                $hookResult = array_reduce(
                    Hook::exec('actionSubmitAccountBefore', [], null, true),
                    function ($carry, $item) {
                        return $carry && $item;
                    },
                    true
                );
                // Vérification du reCAPTCHA
                if (empty($_POST['g-recaptcha-response'])) {
                    $this->errors[] = $this->trans('Veuillez cocher la case reCAPTCHA.', [], 'Modules.Contactform.Shop');
                    return;
                }

                $recaptchaResponse = $_POST['g-recaptcha-response'];
                $recaptchaSecret = 'ENTER_SECRET_KEY_RECAPTCHA_V2';
                $recaptchaVerifyUrl = 'https://www.google.com/recaptcha/api/siteverify';
                $recaptchaVerifyResponse = file_get_contents($recaptchaVerifyUrl . '?secret=' . $recaptchaSecret . '&response=' . $recaptchaResponse);
                $recaptchaData = json_decode($recaptchaVerifyResponse);

                if (!$recaptchaData->success) {
                    $this->errors[] = $this->trans('Le reCAPTCHA n\'a pas été validé.', [], 'Modules.Contactform.Shop');
                    return;
                }

                if ($hookResult && $register_form->submit()) {
                    $should_redirect = true;
                }

            }

            $this->context->smarty->assign([
                'register_form' => $register_form->getProxy(),
                'hook_create_account_top' => Hook::exec('displayCustomerAccountFormTop'),
            ]);
            $this->setTemplate('customer/registration');
        } else {
            $login_form = $this->makeLoginForm()->fillWith(
                Tools::getAllValues()
            );

            if (Tools::isSubmit('submitLogin')) {
                if ($login_form->submit()) {
                    $should_redirect = true;
                }
            }

            $this->context->smarty->assign([
                'login_form' => $login_form->getProxy(),
            ]);
            $this->setTemplate('customer/authentication');
        }

        parent::initContent();

        if ($should_redirect && !$this->ajax) {
            $back = rawurldecode(Tools::getValue('back'));

            if (Tools::urlBelongsToShop($back)) {
                // Checks to see if "back" is a fully qualified
                // URL that is on OUR domain, with the right protocol
                return $this->redirectWithNotifications($back);
            }

            // Well we're not redirecting to a URL,
            // so...
            if ($this->authRedirection) {
                // We may need to go there if defined
                return $this->redirectWithNotifications($this->authRedirection);
            }

            // go home
            return $this->redirectWithNotifications(__PS_BASE_URI__);
        }
    }

    public function getBreadcrumbLinks()
    {
        $breadcrumb = parent::getBreadcrumbLinks();

        if (Tools::isSubmit('submitCreate') || Tools::isSubmit('create_account')) {
            $breadcrumb['links'][] = [
                'title' => $this->trans('Create an account', [], 'Shop.Theme.Customeraccount'),
                'url' => $this->context->link->getPageLink('authentication'),
            ];
        } else {
            $breadcrumb['links'][] = [
                'title' => $this->trans('Log in to your account', [], 'Shop.Theme.Customeraccount'),
                'url' => $this->context->link->getPageLink('authentication'),
            ];
        }

        return $breadcrumb;
    }
}

 

Merci à vous et bonne journée !

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...