{% extends "base_template.html" %} {% block title %}{{ _('Captcha') }}{% endblock %} {% block content %}

{{ _('Cloudflare Turnstile captcha') }}

{{ _('Keys used to protect forms from spam. Editable here, no .env edit needed.') }}

{% with messages = get_flashed_messages(with_categories=true) %} {% for category, message in messages %}
{{ message }}
{% endfor %} {% endwith %} {% if open_in_effect == 'empty' %} {# Without a secret the check lets every submission through. #} {% elif open_in_effect == 'test-key' %} {# The test secret accepts only the public dummy token, which any bot can send. #} {% endif %}
{{ _('Public key, rendered in the page next to the widget.') }}
{# The stored secret is never written into the page. #}
{{ _('Private key, used server-side to verify submissions. Once stored it is never shown again.') }}
{% if secret_stored %}
{{ _('A secret key is stored. Leave the field empty to keep it, or type a new one to replace it.') }}
{% if open_after_removal == 'empty' %}
{{ _("The product configuration holds no secret key, so removing the stored one leaves the forms unprotected.") }}
{% elif open_after_removal == 'test-key' %}
{{ _("The product configuration holds Cloudflare's test key, so removing the stored one leaves the forms unprotected.") }}
{% endif %} {% else %}
{{ _('No secret key is stored here, so the one in the product configuration is used. Type one to store it.') }}
{% endif %}
{{ _("Cloudflare's official test keys are used by default, so development works out of the box (they always pass).") }} {{ _('Get real keys for production from the Cloudflare Turnstile dashboard.') }}
{% endblock %}