From 99c159ae313dc6e791ae82cf937a0e29f110d97c Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 27 Jan 2026 09:41:25 -0800 Subject: skip captcha for tor --- src/routes/(app)/reset/[code]/+page.svelte | 4 ++++ src/routes/(static)/login/+page.svelte | 4 ++++ src/routes/(static)/register/+page.svelte | 4 ++++ src/routes/(static)/support/+page.svelte | 14 ++++++++++++++ 4 files changed, 26 insertions(+) (limited to 'src') diff --git a/src/routes/(app)/reset/[code]/+page.svelte b/src/routes/(app)/reset/[code]/+page.svelte index 4cecb4fb..755b7d19 100644 --- a/src/routes/(app)/reset/[code]/+page.svelte +++ b/src/routes/(app)/reset/[code]/+page.svelte @@ -15,9 +15,11 @@ let loading; let recaptchaToken = ""; let recaptchaSiteKey = PUBLIC_RECAPTCHA_SITE_KEY; + let isTor = $derived(browser && location.hostname.endsWith(".onion")); const getRecaptchaToken = () => new Promise((resolve, reject) => { + if (isTor) return resolve(""); if (!browser || !grecaptcha) return reject(new Error("captcha unavailable")); grecaptcha.ready(() => { grecaptcha @@ -58,11 +60,13 @@ }); +{#if !isTor} +{/if}
diff --git a/src/routes/(static)/login/+page.svelte b/src/routes/(static)/login/+page.svelte index adc4c804..bec702a1 100644 --- a/src/routes/(static)/login/+page.svelte +++ b/src/routes/(static)/login/+page.svelte @@ -39,6 +39,7 @@ let { challenge } = $derived(data); let recaptchaSiteKey = PUBLIC_RECAPTCHA_SITE_KEY; + let isTor = $derived(browser && location.hostname.endsWith(".onion")); let token = $state(""); let cancel = () => (need2fa = false); @@ -57,6 +58,7 @@ const getRecaptchaToken = () => new Promise((resolve, reject) => { + if (isTor) return resolve(""); if (!browser || !grecaptcha) return reject(new Error("captcha unavailable")); grecaptcha.ready(() => { grecaptcha @@ -151,11 +153,13 @@ }); +{#if !isTor} +{/if}
{ if (browser) { @@ -97,6 +98,7 @@ let loading = $state(); const getRecaptchaToken = () => new Promise((resolve, reject) => { + if (isTor) return resolve(""); if (!browser || !grecaptcha) return reject(new Error("captcha unavailable")); grecaptcha.ready(() => { grecaptcha @@ -253,11 +255,13 @@ }); +{#if !isTor} +{/if} {#if need2fa} diff --git a/src/routes/(static)/support/+page.svelte b/src/routes/(static)/support/+page.svelte index 09959174..620ed018 100644 --- a/src/routes/(static)/support/+page.svelte +++ b/src/routes/(static)/support/+page.svelte @@ -15,9 +15,21 @@ let message = $state(); let sent = $state(); let recaptchaSiteKey = PUBLIC_RECAPTCHA_SITE_KEY; + let isTor = $derived(browser && location.hostname.endsWith(".onion")); let submit = (e) => { e.preventDefault(); + if (isTor) { + post("/post/email", { + username: user?.username || `${username} (unverified)`, + email, + message, + token: "", + }) + .then(() => (sent = true)) + .catch(() => fail("problem submitting")); + return; + } grecaptcha.ready(() => { grecaptcha.execute(recaptchaSiteKey, { action: "submit" }).then((token) => post("/post/email", { @@ -50,11 +62,13 @@ }); +{#if !isTor} +{/if}
{#if sent} -- cgit v1.2.3