0584ebdc74
Co-authored-by: Cursor <cursoragent@cursor.com>
37 lines
1.3 KiB
HTML
37 lines
1.3 KiB
HTML
{% if captcha_config %}
|
|
{% if captcha_config.provider == 'turnstile' %}
|
|
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
|
|
{% elif captcha_config.provider == 'recaptcha_v2' %}
|
|
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
|
|
{% elif captcha_config.provider == 'recaptcha_v3' %}
|
|
<script src="https://www.google.com/recaptcha/api.js?render={{ captcha_config.site_key }}"></script>
|
|
<script>
|
|
(function () {
|
|
function bindRecaptchaV3() {
|
|
const form = document.querySelector(".auth-form");
|
|
const tokenInput = document.getElementById("recaptchaV3Token");
|
|
if (!form || !tokenInput || !window.grecaptcha) return;
|
|
|
|
form.addEventListener("submit", function (event) {
|
|
if (tokenInput.value) return;
|
|
event.preventDefault();
|
|
grecaptcha.ready(function () {
|
|
grecaptcha.execute("{{ captcha_config.site_key }}", { action: "{{ captcha_config.action }}" })
|
|
.then(function (token) {
|
|
tokenInput.value = token;
|
|
form.submit();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
if (window.grecaptcha) {
|
|
bindRecaptchaV3();
|
|
} else {
|
|
window.addEventListener("load", bindRecaptchaV3);
|
|
}
|
|
})();
|
|
</script>
|
|
{% endif %}
|
|
{% endif %}
|