Fix invisible Turnstile login submit flow
This commit is contained in:
parent
10b0d45c3d
commit
2d3d181e45
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue