(null);
const [resendCooldown, setResendCooldown] = createSignal(0);
+ const [turnstileResetCount, setTurnstileResetCount] = createSignal(0);
// Redirect if already authenticated
createEffect(() => {
@@ -84,6 +85,7 @@ const Login: Component = () => {
turnstile_token: turnstileToken()!,
});
setSubmitted(true);
+ setTurnstileToken(null);
setResendCooldown(60);
} catch (err) {
if (isApiError(err)) {
@@ -101,7 +103,7 @@ const Login: Component = () => {
};
const handleResend = async () => {
- if (resendCooldown() > 0) return;
+ if (resendCooldown() > 0 || !turnstileToken()) return;
setLoading(true);
setError(null);
@@ -110,6 +112,8 @@ const Login: Component = () => {
email: email(),
turnstile_token: turnstileToken()!,
});
+ setTurnstileToken(null);
+ setTurnstileResetCount((c) => c + 1);
setResendCooldown(60);
} catch (err) {
if (isApiError(err)) {
@@ -157,9 +161,18 @@ const Login: Component = () => {
+
+ setTurnstileToken(token)}
+ onExpired={() => setTurnstileToken(null)}
+ onError={() => setTurnstileToken(null)}
+ resetSignal={turnstileResetCount}
+ />
+
+