// static/auth.js (v2.0) const loginForm = document.getElementById('login-form'); const registerForm = document.getElementById('register-form'); const errorMessage = document.getElementById('error-message'); function toggleForms() { errorMessage.textContent = ''; if (loginForm.style.display === 'none') { loginForm.style.display = 'block'; registerForm.style.display = 'none'; } else { loginForm.style.display = 'none'; registerForm.style.display = 'block'; } } async function login(event) { event.preventDefault(); errorMessage.textContent = ''; const email = document.getElementById('login-email').value; const password = document.getElementById('login-password').value; try { // Usamos el endpoint /token que establece la cookie HttpOnly const response = await fetch('/token', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ 'grant_type': 'password', 'username': email, 'password': password }) }); if (response.ok) { // La cookie se establece en el backend. Simplemente redirigimos. window.location.href = '/'; } else { const errorData = await response.json(); errorMessage.textContent = errorData.detail || 'Error en el inicio de sesión.'; } } catch (error) { errorMessage.textContent = 'No se pudo conectar con el servidor.'; } } async function register(event) { event.preventDefault(); errorMessage.textContent = ''; const email = document.getElementById('register-email').value; const password = document.getElementById('register-password').value; try { const response = await fetch('/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }) }); if (response.status === 201) { // Registro exitoso, ahora intentar iniciar sesión automáticamente await login(event); } else { const errorData = await response.json(); errorMessage.textContent = errorData.detail || 'Error en el registro.'; } } catch (error) { errorMessage.textContent = 'No se pudo conectar con el servidor.'; } }