import { useState } from 'react'; import { QRCodeSVG } from 'qrcode.react'; import { useGameStore } from '../store/gameStore'; import { emit } from '../lib/socket'; type Mode = 'login' | 'register'; export default function Auth() { const [mode, setMode] = useState('login'); const [username, setUsername] = useState(localStorage.getItem('bridzik_name') ?? ''); const [code, setCode] = useState(''); const registration = useGameStore((s) => s.registration); const setRegistration = useGameStore((s) => s.setRegistration); const remember = (name: string) => localStorage.setItem('bridzik_name', name.trim()); const handleLogin = (e: React.FormEvent) => { e.preventDefault(); if (!username.trim() || code.trim().length < 6) return; remember(username); emit.login(username.trim(), code.trim()); }; const handleRegisterStart = (e: React.FormEvent) => { e.preventDefault(); if (!username.trim()) return; remember(username); emit.registerAccount(username.trim()); }; const handleConfirm = (e: React.FormEvent) => { e.preventDefault(); if (code.trim().length < 6) return; emit.confirmAccount(username.trim(), code.trim()); }; const switchMode = (m: Mode) => { setMode(m); setCode(''); setRegistration(null); }; return (

Bridzik

Prihlas sa kodom z aplikacie (napr. Google Authenticator).

{mode === 'login' && (
setUsername(e.target.value)} maxLength={40} placeholder="Pouzivatelske meno" className="bg-slate-700 text-white rounded-lg px-4 py-2 outline-none focus:ring-2 focus:ring-blue-500" /> setCode(e.target.value.replace(/\D/g, ''))} maxLength={6} placeholder="6-miestny kod" className="bg-slate-700 text-white rounded-lg px-4 py-2 outline-none focus:ring-2 focus:ring-blue-500 tracking-widest font-mono" />
)} {mode === 'register' && !registration && (
setUsername(e.target.value)} maxLength={40} placeholder="Zvol si pouzivatelske meno" className="bg-slate-700 text-white rounded-lg px-4 py-2 outline-none focus:ring-2 focus:ring-blue-500" />
)} {mode === 'register' && registration && (

Naskenuj QR kod do autentifikacnej aplikacie a opis aktualny kod.

Alebo zadaj rucne kluc: {registration.secret}
setCode(e.target.value.replace(/\D/g, ''))} maxLength={6} placeholder="6-miestny kod" className="bg-slate-700 text-white rounded-lg px-4 py-2 outline-none focus:ring-2 focus:ring-blue-500 tracking-widest font-mono" />
)}
); }