0) { die("❌ Este correo ya está registrado."); } // 4. Insertar usuario $sqlInsert = "INSERT INTO usuarios_sistema (nombre, email, password_hash, tipo_usuario, activo, creado_en) VALUES (?, ?, ?, ?, 1, GETDATE())"; $params = [$nombre_encrypted, $email_encrypted, $password_hash, $tipo]; $stmtInsert = sqlsrv_query($conn, $sqlInsert, $params); if ($stmtInsert === false) { die("❌ Error al guardar: " . print_r(sqlsrv_errors(), true)); } // 5. Redirigir header("Location: /IMPORTADORES/sistemas/alta_usuarios"); exit; } function logout() { session_start(); session_unset(); // Limpia variables de sesión session_destroy(); // Destruye la sesión header("Location: /IMPORTADORES/sistemas/login"); exit; } function toggle_estado() { session_start(); if (!($_SESSION['usuario_sistemas'] ?? false)) { die("⚠️ No autorizado."); } $conn = getConnection(); $id = $_GET['id'] ?? null; if (!$id || !is_numeric($id)) { die("❌ ID inválido."); } // Obtener el estado actual $sqlEstado = "SELECT activo FROM usuarios_sistema WHERE id_usuario = ?"; $stmtEstado = sqlsrv_query($conn, $sqlEstado, [$id]); if (!$stmtEstado || !($row = sqlsrv_fetch_array($stmtEstado, SQLSRV_FETCH_ASSOC))) { die("❌ Usuario no encontrado."); } $nuevoEstado = $row['activo'] ? 0 : 1; // Actualizar estado $sqlUpdate = "UPDATE usuarios_sistema SET activo = ? WHERE id_usuario = ?"; $stmtUpdate = sqlsrv_query($conn, $sqlUpdate, [$nuevoEstado, $id]); if (!$stmtUpdate) { die("❌ Error al actualizar: " . print_r(sqlsrv_errors(), true)); } header("Location: /IMPORTADORES/sistemas/alta_usuarios"); exit; } function reset_password() { session_start(); if (!($_SESSION['usuario_sistemas'] ?? false)) { die("⚠️ No autorizado."); } $conn = getConnection(); $id = $_GET['id'] ?? null; if (!$id || !is_numeric($id)) { die("❌ ID inválido."); } // 🔐 Generar contraseña aleatoria de 10 caracteres $randomPassword = bin2hex(random_bytes(5)); // genera algo como 'a8c4f1b92d' $passwordHash = password_hash($randomPassword, PASSWORD_DEFAULT); $sqlEmail = "SELECT email FROM usuarios_sistema WHERE id_usuario = ?"; $stmtEmail = sqlsrv_query($conn, $sqlEmail, [$id]); $row = sqlsrv_fetch_array($stmtEmail, SQLSRV_FETCH_ASSOC); $sql = "UPDATE usuarios_sistema SET password_hash = ? WHERE id_usuario = ?"; $stmt = sqlsrv_query($conn, $sql, [$passwordHash, $id]); if (!$stmt) { die("❌ Error al actualizar: " . print_r(sqlsrv_errors(), true)); } // 🔁 Redirigir pasando la contraseña como parámetro temporal (solo visible para el admin) header("Location: /IMPORTADORES/sistemas/alta_usuarios?reset=ok&pass=" . urlencode($randomPassword) . "&email=" . urlencode(decrypt($row['email']))); exit; } function enviar_password() { $email = $_GET['email'] ?? ''; $pass = $_GET['pass'] ?? ''; if (!$email || !$pass) { http_response_code(400); echo "Datos incompletos."; return; } require_once __DIR__ . '/../../vendor/autoload.php'; $mail = new PHPMailer(true); try { $mail->isSMTP(); $mail->Host = 'secure.emailsrvr.com'; $mail->SMTPAuth = true; $mail->Username = 'noreply@aduanasoft.com.mx'; $mail->Password = $_ENV['SMTP_PASS']; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587; $mail->setFrom('noreply@aduanasoft.com.mx', 'SIIH | AduanaSoft'); $mail->addAddress($email); $mail->isHTML(true); $mail->Subject = 'Nueva contraseña de acceso'; $mail->CharSet = 'UTF-8'; $logoURL='http://siih.aduanasoft.com/IMPORTADORES/public/assets/img/logo_siih.png'; $mail->Body = "