THELIA Forum

Welcome to the THELIA support and discusssion forum

Offline

#26 Re: Plugin ReCaptcha

(20-11-2018 17:59:51)


Bonjour,

Ok grand merci de continuer à me répondre. Bon finalement j'en étais à peu près là, je constate juste que mon controler est un peu différent du votre (qu'un seul catch par ex.).
En fait je m'attendais à un comportement différent, il me semble que souvent cela cache le bouton "envoyer" quand on n'a pas le captcha valide, là c'est un peu bizarre on se retrouve sur l'écran générique d'erreur de Thelia (Oooops) avec retour à l'admin possible ce que l'internaute moyen ne vas pas forcément comprendre.

Serait-il possible d'avoir une page d'erreur de la même façon que l'on a une template contact-success.html, genre une template contact-error.html ... Il faudrait modifier le

if ($checkCaptchaEvent->isHuman() == false) { throw new \Exception('Invalid reCAPTCHA'); }

ou autre chose dans le controler pour avoir ce comportement ?

Pierre.

Offline

#27 Re: Plugin ReCaptcha

(21-11-2018 08:26:35)


Bonjour,

Le retour au formulaire avec le message d'erreur me semble assez explicite
goug.jpg

Offline

#28 Re: Plugin ReCaptcha

(21-11-2018 09:54:59)


Slt,
Oui ça c'est nickel mais ça n'est pas du tout ce qui se passe chez moi ... moi ça revient sur l'écran d'erreur standard de Thelia avec le oops ... ok ce que je vais faire c'est copier-coller tout le controller que vous avez fourni ci-dessus car comme je le disais je n'ai pas exactement la même chose et je vais voir.
(pour mémoire je suis pourtant en 2.3.4 avec tout à jour, bizarre que j'ai un controller différent non ?)
Pierre.

Offline

#29 Re: Plugin ReCaptcha

(21-11-2018 21:37:57)


Bonsoir,

Bon j'ai copié exactement le code proposé par Zzuutt (encore merci pour sa patience), cela a changé le comportement dans le sens ou si je ne valide pas le captcha, je ne quitte plus la page contact (pour aller vers le ooops), je reste sur la même page contact, le message ne part pas, mais je n'ai pas le message "invalid cpatcha"....
Si je valide le captcha ça marche.

J'ai aussi essayé de remplacer ma template contact.html par celle de la distribution (car moi j'ai supprimé la map), rajouté ce qui est conseillé par Zzuutt, même comportement pas de message.

Bref j'en suis à un moindre mal pour l'internaute, on reste sur la page, et la case du captcha vide est suffisamment visible pour que l'on comprenne ce qu'il manque, mais je n'ai pas de message. Mais j'ai bien les alertes si je ne remplis pas les champs obligatoires. C'est un hook spécifique qui affiche ce message d'erreur ? A priori je n'ai rien de dévalidé, c'est un site très standard ...

Pierre.

Offline

#30 Re: Plugin ReCaptcha

(22-11-2018 16:08:36)


Bonjour,

Rajoutes dans contact.html

...
        {block name="contact-form"}
            {form name="thelia.front.contact"}
            {if $form_error}
                <div class="alert alert-danger">{$form_error_message}</div>
            {/if}
...

Offline

#31 Re: Plugin ReCaptcha

(22-11-2018 20:14:09)


Bonjour,

Oui ça le fait parfaitement, j'ai mis en français dans le controller ...

Je ne peux m'empêcher de revenir sur tout ce processus pour arriver à faire marcher un plugin au fond simple... pour moi cela défie carrément la notion de plugin, dans tous les CMS que je connais, installer un plugin nécessite 2 clics et 3 paramètres ce qui fait que je n'ai jamais vraiment cherché dans les bonnes directions, pensant toujours que la doc qui disait, je cite "This module allow you to add easily a reCAPTCHA to your form" avait raison et que ça devrait être simple, je n'imaginais simplement pas que je devrais modifier un controller du core ...
La il faut faire des modifications aux templates (logique) mais aussi au controller dans quelque chose qui sera écrasé à la prochaine mise à jour sauf à créer un nouveau module ... pour faire marcher ce plugin et le rendre pérenne il faut quasiment faire un second plugin ... (ok c'est une simple duplication mais largement hors de portée d'un utilisateur de base) ...

Bref que faire d'autre sinon remercier avec effusion ceux qui acceptent d'aider, acheter un bouquin sur Symfony et tenter d'apprendre une techno de plus .... :-( J'ai dû installer des reCaptacha plusieurs 10aines de fois dans des Wordpress, Spip, Drupal ou même sites HTML sans jamais que ça me prenne plus de 10mn, là ça a plutôt été 10 jours ... Oh well ...

Pierre

PS: Zzuutt si tu passes par Grenoble, une bière t'attends :-)

Last edited by pierrot (22-11-2018 20:15:36)

Offline

#32 Re: Plugin ReCaptcha

(23-11-2018 07:35:12)


Ce module ne s'intègre pas tout seul à la form de contact, il est fourni comme un outil pour les développeurs.

Il faudrait que quelqu'un prenne un moment pour faire cette intégration.


CQFDev | Sites, boutiques, modules, développement et intégration pour Thelia 1 et 2

Offline

#33 Re: Plugin ReCaptcha

(23-11-2018 09:44:22)


Bonjour,
Attention, mon idée n'était pas de critiquer le plugin mais peut-être plutot de critiquer la doc qui oublie complètement de mentionner tout ça, voire qui au contraire donne l'impression que c'est très simple. Si j'avais su avant j'aurai probablement pris direct la voie d'une intégration simple à la mano (no hook, direct dans le code du template, un peu de jquery, ...), mais une fois qu'on a démarré dans une voie c'est souvent difficile de revenir en arrière on pense que la solution est toujours juste à portée de main ... :-) (sur ce précepte l'autre jour j'ai attendu 1h20 le support OVH au téléphone, une fois qu'on a attendu X minutes il semble débile de perdre cet acquis et de recommencer plus tard :-)
Bref en tous cas maintenant je sais !
Pierre.

PS: et l'offre bière tient aussi bien sûr pour roadster31 qui m'a moultes fois dépanné ici !!

Offline

#34 Re: Plugin ReCaptcha

(28-08-2019 10:51:06)


Bonjour

J'essaie d'intégrer un bouton caPTCHA invisible dans le formulaire d'inscription à la newsletter... mais c'est dur !
Voilà où j'en suis. Cela pourra peut-être aider ou me débloquer.

J'ai créé un compte sur Google Captcha "bouton invisible v2"

Dans le fichier /templates/frontOffice/monsite/newsletter.html j'ai ajouté  {hook name="recaptcha.check"} comme ceci :

            {form name="thelia.front.newsletter"}
                <form id="form-newsletter" action="{url path="/newsletter"}" method="post">
                {hook name="recaptcha.check"}

et aussi {hook name="recaptcha.invisible.button"} là :

 <div class="form-group group-btn">
                            <div class="control-btn">
                                <button type="submit" class="btn btn-primary" {hook name="recaptcha.invisible.button"}><i class="fa fa-chevron-right"></i> {intl l="Subscribe"}</button>
                            </div>
                        </div><!--/.form-group-->

Dans le fichier /local/modules/Front/Controller/NewsletterController.php j'ai ajouté : :

use Thelia\Model\ModuleQuery;
use ReCaptcha\Event\ReCaptchaCheckEvent;
use ReCaptcha\Event\ReCaptchaEvents;

et puis :

        try {
            $form = $this->validateForm($newsletterForm);
            
$checkCaptchaEvent = new ReCaptchaCheckEvent();
$this->dispatch(ReCaptchaEvents::CHECK_CAPTCHA_EVENT, $checkCaptchaEvent);

if ($checkCaptchaEvent->isHuman() == false) {
    throw new \Exception('Invalid captcha');
}

et enfin j'ai vérifié que j'ai bien {hook name="main.head-top"} dans /templates/frontOffice/monsite/layout.tpl

Bon et alors quand je veux inscrire un email à la newsletter j'ai un message en lightbox "Invalid captcha".

Est-ce que j'ai tout faux ou qu'est-ce que j'ai loupé ?

Merci
Gildart