🛠️ Gestión Unificada de Administradores
📋 Lista de Administradores
➕ Agregar Admin
🔑 Cambiar Contraseña
🔍 Probar Login
⚙️ Configuración
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 'ID Usuario Nombre Email Estado Último Login Acciones ';
foreach ($admins as $admin) {
echo '';
echo '' . $admin['id'] . ' ';
echo '' . htmlspecialchars($admin['username']) . ' ';
echo '' . htmlspecialchars($admin['full_name'] ?? 'Sin nombre') . ' ';
echo '' . htmlspecialchars($admin['email'] ?? 'Sin email') . ' ';
echo '✅ Activo' : 'inactive">❌ Inactivo') . ' ';
echo '' . ($admin['last_login'] ?? 'Nunca') . ' ';
echo '';
echo '';
echo ' ';
echo ' ';
}
echo '
';
}
?>
➕ Agregar Nuevo Administrador
🔑 Cambiar Contraseña de Administrador
🔍 Probar Credenciales de Login
⚙️ 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