🔄 Migración a Sistema de Base de Datos

PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC] ); echo '
Conexión a base de datos exitosa
'; // Verificar si ya está migrado $checkTable = $pdo->query("SHOW TABLES LIKE 'admin_users'"); $alreadyMigrated = $checkTable->rowCount() > 0; if ($alreadyMigrated && !isset($_GET['force'])) { echo '
'; echo '

⚠️ Sistema Ya Migrado

'; echo '

El sistema de autenticación ya ha sido migrado a la base de datos.

'; echo '

🛠️ Ir a Gestión de Administradores

'; echo '

⚠️ Forzar Re-migración

'; echo '
'; exit; } // Ejecutar migración if (isset($_GET['migrate']) || isset($_GET['force'])) { echo '
'; echo '

🚀 Ejecutando Migración...

'; $steps = [ 'create_table' => 'Crear tabla admin_users', 'migrate_admin' => 'Migrar usuario administrador existente', 'verify_data' => 'Verificar datos migrados', 'update_config' => 'Actualizar configuración del sistema' ]; $results = []; // Paso 1: Crear tabla echo '
'; echo '

📋 Paso 1: Creando tabla admin_users...

'; try { if ($alreadyMigrated) { $pdo->exec("DROP TABLE IF EXISTS admin_users"); echo '

- Tabla existente eliminada (re-migración)

'; } $createTableSQL = " CREATE TABLE admin_users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL, full_name VARCHAR(100), email VARCHAR(100), is_active BOOLEAN DEFAULT TRUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, last_login TIMESTAMP NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci"; $pdo->exec($createTableSQL); echo '

✅ Tabla admin_users creada exitosamente

'; $results['create_table'] = true; } catch (Exception $e) { echo '

❌ Error creando tabla: ' . $e->getMessage() . '

'; $results['create_table'] = false; } echo '
'; // Paso 2: Migrar usuario admin echo '
'; echo '

👤 Paso 2: Migrando usuario administrador...

'; try { if (defined('ADMIN_PASSWORD')) { $stmt = $pdo->prepare(" INSERT INTO admin_users (username, password_hash, full_name, email, is_active) VALUES (?, ?, ?, ?, ?) "); $stmt->execute([ 'admin', ADMIN_PASSWORD, // Ya está hasheado 'Administrador Principal', 'admin@' . ($_SERVER['HTTP_HOST'] ?? 'localhost'), 1 ]); echo '

✅ Usuario admin migrado con contraseña existente

'; echo '

- Usuario: admin

'; echo '

- Contraseña: La misma que usabas antes

'; $results['migrate_admin'] = true; } else { echo '

❌ No se encontró ADMIN_PASSWORD en config.php

'; $results['migrate_admin'] = false; } } catch (Exception $e) { echo '

❌ Error migrando admin: ' . $e->getMessage() . '

'; $results['migrate_admin'] = false; } echo '
'; // Paso 3: Verificar datos echo '
'; echo '

🔍 Paso 3: Verificando datos migrados...

'; try { $stmt = $pdo->query("SELECT * FROM admin_users"); $admins = $stmt->fetchAll(); if (empty($admins)) { echo '

❌ No se encontraron administradores en la tabla

'; $results['verify_data'] = false; } else { echo '

✅ Verificación exitosa. Administradores encontrados:

'; foreach ($admins as $admin) { echo '
'; echo 'ID: ' . $admin['id'] . ' | Usuario: ' . $admin['username'] . ' | Activo: ' . ($admin['is_active'] ? 'Sí' : 'No'); echo '
'; } $results['verify_data'] = true; } } catch (Exception $e) { echo '

❌ Error verificando datos: ' . $e->getMessage() . '

'; $results['verify_data'] = false; } echo '
'; // Paso 4: Actualizar configuración echo '
'; echo '

⚙️ Paso 4: Actualizando configuración del sistema...

'; // Marcar migración completada $migrationFlag = dirname(__FILE__) . '/.auth_migrated'; if (file_put_contents($migrationFlag, date('Y-m-d H:i:s'))) { echo '

✅ Flag de migración creado

'; } else { echo '

⚠️ No se pudo crear flag de migración

'; } echo '

✅ Sistema configurado para usar autenticación por BD

'; $results['update_config'] = true; echo '
'; // Resumen final $allSuccess = !in_array(false, $results); if ($allSuccess) { echo '
'; echo '

🎉 ¡Migración Completada Exitosamente!

'; echo '

El sistema de autenticación ha sido migrado exitosamente a la base de datos.

'; echo '

📋 Qué cambió:

'; echo '
    '; echo '
  • ✅ Las contraseñas se almacenan ahora en la tabla admin_users
  • '; echo '
  • ✅ Se mantiene retrocompatibilidad durante la transición
  • '; echo '
  • ✅ El login ahora usa el nuevo sistema unificado
  • '; echo '
  • ✅ Se pueden crear múltiples administradores
  • '; echo '
'; echo '

🛠️ Gestionar Administradores

'; echo '

🔐 Probar Login

'; echo '
'; } else { echo '
'; echo '

❌ Migración Parcial o con Errores

'; echo '

Algunos pasos fallaron. Revisa los errores arriba y contacta soporte si es necesario.

'; echo '
'; } echo '
'; // Cierre progress-box } else { // Mostrar información pre-migración echo '
'; echo '

📋 Información de la Migración

'; echo '

Este proceso migrará tu sistema de autenticación hardcodeado a un sistema basado en base de datos.

'; echo '

🔄 Qué va a pasar:

'; echo ''; echo '

⚡ Información actual:

'; echo '
'; echo 'Base de datos: ' . DB_NAME . '
'; echo 'Usuario BD: ' . DB_USER . '
'; echo 'Contraseña admin actual: ' . (defined('ADMIN_PASSWORD') ? 'Configurada' : 'NO CONFIGURADA') . '
'; echo '
'; echo '

🚀 Iniciar Migración

'; echo '
'; } } catch (Exception $e) { echo '
'; echo '

❌ Error de Conexión

'; echo '

No se pudo conectar a la base de datos:

'; echo '
' . $e->getMessage() . '
'; echo '

Verifica tu configuración en config/config.php

'; echo '
'; } ?>

⚠️ Notas Importantes: