// Sistema de autenticación con PIN class AuthManager { constructor() { this.usuario = null; this.autenticado = false; } // Verificar si hay sesión activa async verificarSesion() { try { const response = await fetch('/api/auth.php'); const data = await response.json(); if (data.autenticado) { this.autenticado = true; this.usuario = data.usuario; return true; } return false; } catch (error) { console.error('Error al verificar sesión:', error); return false; } } // Autenticar con PIN async autenticar(pin) { try { const response = await fetch('/api/auth.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ pin }) }); const data = await response.json(); if (data.success) { this.autenticado = true; this.usuario = data.usuario; return { success: true, usuario: data.usuario }; } else { return { success: false, mensaje: data.mensaje }; } } catch (error) { console.error('Error al autenticar:', error); return { success: false, mensaje: 'Error de conexión' }; } } // Cerrar sesión async cerrarSesion() { try { await fetch('/api/auth.php', { method: 'DELETE' }); this.autenticado = false; this.usuario = null; window.location.href = '/login'; } catch (error) { console.error('Error al cerrar sesión:', error); } } // Proteger página (redirigir si no está autenticado) async protegerPagina() { const sesionActiva = await this.verificarSesion(); if (!sesionActiva) { window.location.href = '/login'; } return sesionActiva; } obtenerUsuario() { return this.usuario; } estaAutenticado() { return this.autenticado; } } // Instancia global const authManager = new AuthManager();