Fix Turnstile login using immediate credential refs
This commit is contained in:
parent
2d3d181e45
commit
416fbc6fc1
|
|
@ -17,6 +17,8 @@ export default function LoginPage() {
|
||||||
const turnstileRef = useRef<HTMLDivElement>(null);
|
const turnstileRef = useRef<HTMLDivElement>(null);
|
||||||
const widgetIdRef = useRef<string | null>(null);
|
const widgetIdRef = useRef<string | null>(null);
|
||||||
const tokenRef = useRef('');
|
const tokenRef = useRef('');
|
||||||
|
const emailRef = useRef('');
|
||||||
|
const passwordRef = useRef('');
|
||||||
const { login } = useAuth();
|
const { login } = useAuth();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
|
|
@ -26,16 +28,15 @@ export default function LoginPage() {
|
||||||
const performLogin = useCallback(async () => {
|
const performLogin = useCallback(async () => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
try {
|
try {
|
||||||
await login(email, password, tokenRef.current);
|
await login(emailRef.current, passwordRef.current, tokenRef.current);
|
||||||
router.push('/');
|
router.push('/');
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
setError(err.message || 'Login failed. Check your credentials.');
|
setError(err.message || 'Login failed. Check your credentials.');
|
||||||
// Reset turnstile for retry
|
|
||||||
refreshTurnstile();
|
refreshTurnstile();
|
||||||
} finally {
|
} finally {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
}
|
}
|
||||||
}, [email, password, tokenRef.current, login, router]);
|
}, [login, router]);
|
||||||
|
|
||||||
const renderTurnstile = useCallback(() => {
|
const renderTurnstile = useCallback(() => {
|
||||||
if (!TURNSTILE_SITE_KEY || !turnstileRef.current || !(window as any).turnstile) return;
|
if (!TURNSTILE_SITE_KEY || !turnstileRef.current || !(window as any).turnstile) return;
|
||||||
|
|
@ -130,7 +131,11 @@ export default function LoginPage() {
|
||||||
type="email"
|
type="email"
|
||||||
className="input"
|
className="input"
|
||||||
value={email}
|
value={email}
|
||||||
onChange={(e) => setEmail(e.target.value)}
|
onChange={(e) => {
|
||||||
|
const v = e.target.value;
|
||||||
|
emailRef.current = v;
|
||||||
|
setEmail(v);
|
||||||
|
}}
|
||||||
placeholder="admin@sojorn.net"
|
placeholder="admin@sojorn.net"
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
|
|
@ -141,7 +146,11 @@ export default function LoginPage() {
|
||||||
type="password"
|
type="password"
|
||||||
className="input"
|
className="input"
|
||||||
value={password}
|
value={password}
|
||||||
onChange={(e) => setPassword(e.target.value)}
|
onChange={(e) => {
|
||||||
|
const v = e.target.value;
|
||||||
|
passwordRef.current = v;
|
||||||
|
setPassword(v);
|
||||||
|
}}
|
||||||
placeholder="••••••••"
|
placeholder="••••••••"
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue