From 9502dc7037df25e866122ce122f8db785832912c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gestor=C3=ADa=20LP?= Date: Mon, 2 Mar 2026 03:15:23 +0000 Subject: [PATCH] feat: admin setup script for initial password configuration Co-Authored-By: Claude Opus 4.6 --- admin/setup.php | 123 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 admin/setup.php diff --git a/admin/setup.php b/admin/setup.php new file mode 100644 index 0000000..1a944c1 --- /dev/null +++ b/admin/setup.php @@ -0,0 +1,123 @@ +Setup

Acceso Denegado

Necesitas la clave de setup. Accede con: setup.php?key=TU_CLAVE

'); +} + +if ($_SERVER['REQUEST_METHOD'] === 'POST' && csrfValidate()) { + $username = trim($_POST['username'] ?? 'admin'); + $password = $_POST['password'] ?? ''; + $passwordConfirm = $_POST['password_confirm'] ?? ''; + + if (strlen($password) < 8) { + $error = 'La contraseña debe tener al menos 8 caracteres.'; + } elseif ($password !== $passwordConfirm) { + $error = 'Las contraseñas no coinciden.'; + } else { + $db = getDB(); + $hash = password_hash($password, PASSWORD_DEFAULT); + + // Check if user exists + $stmt = $db->prepare('SELECT id FROM usuarios WHERE username = ?'); + $stmt->execute([$username]); + $existing = $stmt->fetch(); + + if ($existing) { + $stmt = $db->prepare('UPDATE usuarios SET password_hash = ? WHERE username = ?'); + $stmt->execute([$hash, $username]); + $message = "Contraseña actualizada para el usuario '{$username}'."; + } else { + $stmt = $db->prepare('INSERT INTO usuarios (username, password_hash, email) VALUES (?, ?, ?)'); + $stmt->execute([$username, $hash, 'admin@gestorialp.com']); + $message = "Usuario '{$username}' creado exitosamente."; + } + + // Clear setup session + unset($_SESSION['setup_key_valid']); + } +} +?> + + + + + + Setup - Gestoría LP + + + + +
+

Setup Inicial

+

Configura tu usuario administrador para Gestoría LP

+ + + + + + +
+ + + +
+ +
+ + +
+
+ + +
+
+ + +
+ +
+
+ Importante: Después de configurar tu usuario, elimina este archivo (setup.php) del servidor por seguridad. +
+ +
+ +