🛠️ Gestión Unificada de Administradores

PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC] ); // Verificar si el sistema está migrado $checkTable = $pdo->query("SHOW TABLES LIKE 'admin_users'"); $tableExists = $checkTable->rowCount() > 0; if (!$tableExists) { echo '
'; echo '

❌ Sistema No Migrado

'; echo '

El sistema de contraseñas aún no ha sido migrado a la base de datos.

'; echo '

🔄 Migrar Sistema Ahora

'; echo '
'; exit; } // Procesar acciones if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) { if ($_POST['action'] === 'add_admin') { $username = trim($_POST['username']); $password = $_POST['password']; $fullName = trim($_POST['full_name']); $email = trim($_POST['email']); if (strlen($username) < 3) { echo '
❌ El usuario debe tener al menos 3 caracteres
'; } elseif (strlen($password) < 6) { echo '
❌ La contraseña debe tener al menos 6 caracteres
'; } else { $passwordHash = password_hash($password, PASSWORD_DEFAULT); try { $stmt = $pdo->prepare("INSERT INTO admin_users (username, password_hash, full_name, email) VALUES (?, ?, ?, ?)"); $stmt->execute([$username, $passwordHash, $fullName, $email]); echo '
✅ Administrador creado exitosamente: ' . htmlspecialchars($username) . '
'; } catch (PDOException $e) { echo '
❌ Error: ' . (strpos($e->getMessage(), 'Duplicate') !== false ? 'El usuario ya existe' : $e->getMessage()) . '
'; } } } if ($_POST['action'] === 'update_password') { $username = $_POST['username']; $newPassword = $_POST['new_password']; $confirmPassword = $_POST['confirm_password']; if ($newPassword !== $confirmPassword) { echo '
❌ Las contraseñas no coinciden
'; } elseif (strlen($newPassword) < 6) { echo '
❌ La contraseña debe tener al menos 6 caracteres
'; } else { $passwordHash = password_hash($newPassword, PASSWORD_DEFAULT); $stmt = $pdo->prepare("UPDATE admin_users SET password_hash = ?, updated_at = NOW() WHERE username = ?"); if ($stmt->execute([$passwordHash, $username])) { echo '
✅ Contraseña actualizada para: ' . htmlspecialchars($username) . '
'; } else { echo '
❌ Error actualizando contraseña
'; } } } if ($_POST['action'] === 'toggle_status') { $userId = $_POST['user_id']; $stmt = $pdo->prepare("UPDATE admin_users SET is_active = NOT is_active, updated_at = NOW() WHERE id = ?"); if ($stmt->execute([$userId])) { echo '
✅ Estado del usuario actualizado
'; } else { echo '
❌ Error actualizando estado
'; } } if ($_POST['action'] === 'test_login') { $testUsername = $_POST['test_username']; $testPassword = $_POST['test_password']; $stmt = $pdo->prepare("SELECT * FROM admin_users WHERE username = ? AND is_active = 1"); $stmt->execute([$testUsername]); $admin = $stmt->fetch(); if ($admin && password_verify($testPassword, $admin['password_hash'])) { echo '
LOGIN EXITOSO
'; echo 'Usuario: ' . htmlspecialchars($admin['username']) . '
'; echo 'Nombre: ' . htmlspecialchars($admin['full_name']) . '
'; echo 'Último login: ' . ($admin['last_login'] ?? 'Nunca') . '
'; // Actualizar último login $updateLogin = $pdo->prepare("UPDATE admin_users SET last_login = NOW() WHERE id = ?"); $updateLogin->execute([$admin['id']]); } else { echo '
LOGIN FALLIDO
'; if (!$admin) { echo 'Usuario no encontrado o inactivo'; } else { echo 'Contraseña incorrecta'; } echo '
'; } } if ($_POST['action'] === 'clear_login_attempts') { $attemptsFile = '.login_attempts.json'; if (file_exists($attemptsFile)) { unlink($attemptsFile); echo '
✅ Intentos de login bloqueados eliminados
'; } else { echo '
⚠️ No hay bloqueos para eliminar
'; } } } } catch (Exception $e) { echo '
❌ Error de base de datos: ' . $e->getMessage() . '
'; exit; } ?>

📋 Administradores del Sistema

query("SELECT * FROM admin_users ORDER BY created_at DESC"); $admins = $stmt->fetchAll(); if (empty($admins)) { echo '
⚠️ No hay administradores en la base de datos
'; } else { echo ''; echo ''; foreach ($admins as $admin) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
IDUsuarioNombreEmailEstadoÚltimo LoginAcciones
' . $admin['id'] . '' . htmlspecialchars($admin['username']) . '' . htmlspecialchars($admin['full_name'] ?? 'Sin nombre') . '' . htmlspecialchars($admin['email'] ?? 'Sin email') . '✅ Activo' : 'inactive">❌ Inactivo') . '' . ($admin['last_login'] ?? 'Nunca') . ''; echo '
'; echo ''; echo ''; echo ''; echo '
'; echo '
'; } ?>

➕ Agregar Nuevo Administrador

🔑 Cambiar Contraseña de Administrador

🔍 Probar Credenciales de Login

🌐 Enlaces de Acceso:

Login del sistema: login.php

Panel principal: index.php

⚙️ Configuración del Sistema

📊 Estado del Sistema

Total de administradores:

Administradores activos: $a['is_active'])); ?>

Base de datos:

Sistema migrado: ✅ Sí

⚠️ Información Importante:

  • Las contraseñas se almacenan de forma segura usando hash
  • Los usuarios inactivos no pueden iniciar sesión
  • Se registra la fecha del último login de cada usuario
  • Esta herramienta debe eliminarse en producción