Chyba šablony:

ReCaptcha

#387

ReCaptcha je mechanismus, který (zejména) u webových formulářů ověřuje, zda ten, kdo formulář odesílá, je opravdu živý člověk a nikoli robot. Nasazení reCaptcha výrazně snižuje množství přicházejícího spa­mu.

Registrace na Google

Po registraci domény vznikne dvojice klíčů: site-key a secret-key, které budeme používat.

Aktivace na webové stránce

Obvykle se reCaptcha používá pouze na stránkách, kde je nějaký formulář; typicky stránka Kontakty.

Obsah stránky, kde má captcha fungovat, musí obsahovat nastavení klíčů:

{{setParams;recaptcha-v3-site-key:6Lch1......qX2}}
{{setParams;recaptcha-v3-secret-key:6Lch1......q6P}}

Úspěšnou aktivaci poznáme podle loga reCaptcha vpravo dole na stránkce.

Implementace do vlastní šablony

V <head> stránky musí být link na javascript zajišťující validaci. Před koncem <body> musí být vlastní javascriptový kód validace.

Toho dosáhneme úpravou page-web.mustache.

Rozšíření <head>:

{{#page.params.recaptcha-v3-site-key]}}<script src='https://www.google.com/recaptcha/api.js?render={{page.params.recaptcha-v3-site-key}}'></script>{{/page.params.recaptcha-v3-site-key}}

Rozšíření <body>:

{{#page.params.recaptcha-v3-site-key}}
        <script>
                $('form').show();
                $('form').submit(function(event) {
                        event.preventDefault();
                        grecaptcha.ready(function() {
                                grecaptcha.execute('{{page.params.recaptcha-v3-site-key}}', {action: 'contact_form'}).then(function(token) {
                                        var recaptchaResponse = document.getElementById('recaptcha-response');
                                        recaptchaResponse.value = token;
                                        $('form').unbind('submit').submit();
                                });
                        });
                });
        </script>
{{/page.params.recaptcha-v3-site-key}}