Spaces:
Sleeping
Sleeping
| // 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.'; | |
| } | |
| } | |