Fix invisible Turnstile login submit flow

This commit is contained in:
Patrick Britton 2026-02-16 12:02:20 -06:00
parent 10b0d45c3d
commit 2d3d181e45

View file

@ -78,13 +78,15 @@ export default function LoginPage() {
e.preventDefault(); e.preventDefault();
setError(''); setError('');
if (TURNSTILE_SITE_KEY && widgetIdRef.current) { // Invisible Turnstile flow:
// Trigger invisible Turnstile verification // - If we don't have a token yet, execute Turnstile first.
// - If we already have a token, proceed with login.
if (TURNSTILE_SITE_KEY && widgetIdRef.current && !tokenRef.current) {
setLoading(true); setLoading(true);
try { try {
(window as any).turnstile.execute(widgetIdRef.current); (window as any).turnstile.execute(widgetIdRef.current);
// The callback will handle the actual login // The Turnstile callback will call performLogin() once a token is issued.
} catch (err: any) { } catch {
setError('Security verification failed. Please try again.'); setError('Security verification failed. Please try again.');
setLoading(false); setLoading(false);
refreshTurnstile(); refreshTurnstile();
@ -92,8 +94,7 @@ export default function LoginPage() {
return; return;
} }
// No Turnstile or direct execution await performLogin();
performLogin();
}; };
return ( return (
@ -161,7 +162,7 @@ export default function LoginPage() {
<button <button
type="submit" type="submit"
className="btn-primary w-full" className="btn-primary w-full"
disabled={loading || (!!TURNSTILE_SITE_KEY && !turnstileReady)} disabled={loading}
> >
{loading ? 'Signing in...' : 'Sign In'} {loading ? 'Signing in...' : 'Sign In'}
</button> </button>