<?php
// --- reset_password.php ---

if (session_status() === PHP_SESSION_NONE) { session_start(); }
include_once __DIR__ . '/db/db_connection.php'; 

// 1. Priorizamos el token que viene del formulario (POST) sobre el de la URL (GET)
$token = $_POST['token'] ?? $_GET['token'] ?? ''; 
$error_mensaje = '';
$mensaje_exito = '';
$mostrar_formulario = false; 

// --- Lógica de Verificación del Token (GET O POST) ---
// Ahora esta verificación usará el token correcto si viene de POST
if (!empty($token) && $_SERVER['REQUEST_METHOD'] === 'GET') {
    try {
        $stmt = $pdo->prepare("
            SELECT id FROM users 
            WHERE reset_token = ? AND reset_token_expiry > NOW()
        ");
        $stmt->execute([$token]);
        $user_id = $stmt->fetchColumn();

        if ($user_id) {
            // Token válido y no expirado
            $mostrar_formulario = true;
        } else {
            // Token no encontrado o expirado
            $error_mensaje = 'El enlace de restablecimiento no es válido o ha expirado. Por favor, solicita uno nuevo.';
        }
    } catch (PDOException $e) {
        error_log("Error de token en reset_password.php: " . $e->getMessage());
        $error_mensaje = 'Error al verificar el enlace. Inténtalo más tarde.';
    }
} else {
    $error_mensaje = 'Acceso denegado. Se requiere un token de restablecimiento.';
}

// --- Lógica de Actualización de Contraseña (POST) ---
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['password']) && isset($_POST['token'])) {
    $new_password = $_POST['password'];
    $post_token = $_POST['token']; // Token oculto en el formulario

    if (strlen($new_password) < 8) {
        $error_mensaje = 'La nueva contraseña debe tener al menos 8 caracteres.';
        // Aseguramos que el formulario se muestre de nuevo para corregir
        $mostrar_formulario = true;
    } else {
        try {
            // 1. Re-validar el token (Crucial por seguridad)
            $stmt = $pdo->prepare("
                SELECT id FROM users 
                WHERE reset_token = ? AND reset_token_expiry > NOW()
            ");
            $stmt->execute([$post_token]);
            $final_user_id = $stmt->fetchColumn();

            if ($final_user_id) {
                // 2. Hashear la nueva contraseña
                $hashed_password = password_hash($new_password, PASSWORD_DEFAULT);

                // 3. Actualizar la contraseña y anular el token (IMPORTANTE: Limpiar el token)
                $update_stmt = $pdo->prepare("
                    UPDATE users SET password_hash = ?, reset_token = NULL, reset_token_expiry = NULL WHERE id = ?
                ");
                $update_stmt->execute([$hashed_password, $final_user_id]);

                $mensaje_exito = '¡Contraseña restablecida con éxito! Ya puedes iniciar sesión.';
                $mostrar_formulario = false; // Ocultar formulario
                $token = ''; // Limpiar token de la URL si estuviera presente
                
            } else {
                $error_mensaje = 'Error de seguridad: El token ha expirado durante el proceso. Por favor, solicita un nuevo enlace.';
            }

        } catch (PDOException $e) {
            error_log("Error al actualizar contraseña: " . $e->getMessage());
            $error_mensaje = 'Error interno al actualizar la contraseña. Inténtalo más tarde.';
        }
    }
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>Restablecer Contraseña | FlowCRM™</title>
  <meta name="robots" content="noindex, nofollow">
  <link rel="icon" type="image/png" href="img/favicon.png">
  <script src="https://cdn.tailwindcss.com"></script>
  <script src="https://unpkg.com/lucide@latest"></script>
  <link href="https://fonts.googleapis.com/css2?family=Barlow:wght@400;600;800;900&display=swap" rel="stylesheet">
  <style>
    body { font-family: 'Barlow', sans-serif; }
    :root{
      --color-primary:#07162d; --color-secondary:#9e1428; --color-highlight:#ffc857;
    }
    .btn-primary{ background: linear-gradient(90deg, var(--color-secondary), #b91c2a); color:#fff; }
    .btn-primary:hover{ filter: brightness(1.05); }
    .fld{ position:relative; }
    .fld input{ padding-top:1.35rem; }
    .fld label{ position:absolute; left:0.875rem; top:0.95rem; font-size:.95rem; color:#6b7280; transition:all .18s ease; pointer-events:none; }
    .fld:focus-within label,
    .fld input:not(:placeholder-shown) + label{ top:.35rem; font-size:.75rem; color:var(--color-primary); }
  </style>
</head>
<body class="h-screen flex flex-col md:flex-row overflow-hidden bg-gray-50">
  
  <main class="w-full md:w-1/2 flex items-center justify-center p-6 sm:p-10 mx-auto">
    <div class="w-full max-w-md">

      <header class="mb-6 text-center">
        <h2 class="text-4xl md:text-5xl font-black leading-none uppercase">
          <span class="text-[var(--color-primary)]">NUEVA</span>
          <span class="text-[var(--color-secondary)]">CLAVE</span>
        </h2>
        <p class="mt-3 text-sm font-semibold tracking-wide text-gray-500">
          Establece Una Contraseña Segura Para Tu Cuenta FlowCRM™
        </p>
      </header>

      <?php if (!empty($error_mensaje)): ?>
        <div class="mb-4 p-3 rounded bg-red-100 text-red-700 flex items-center gap-2">
          <i data-lucide="alert-triangle" class="w-5 h-5"></i>
          <span><?php echo htmlspecialchars($error_mensaje); ?></span>
        </div>
      <?php endif; ?>

      <?php if (!empty($mensaje_exito)): ?>
        <div class="mb-4 p-3 rounded bg-green-100 text-green-700 flex items-center gap-2">
          <i data-lucide="check-circle" class="w-5 h-5"></i>
          <span><?php echo htmlspecialchars($mensaje_exito); ?></span>
        </div>
      <?php endif; ?>

      <?php if ($mostrar_formulario): ?>
      <form action="/reset_password.php" method="POST" class="space-y-5">
        
        <div class="fld">
          <input
            type="password" id="password" name="password" placeholder=" " required minlength="8" autocomplete="new-password"
            class="w-full peer rounded-xl border border-gray-300 bg-white/90 px-3.5 pt-5 pb-2.5 text-[15px] leading-tight outline-none transition focus:border-[var(--color-secondary)] focus:ring-2 focus:ring-[var(--color-highlight)]/50"
          />
          <label for="password">Nueva Contraseña (Mín. 8 Caracteres)</label>
          <button type="button" id="togglePass" aria-label="Mostrar u ocultar contraseña"
                  class="absolute right-3 top-3.5 p-1 rounded-md text-gray-500 hover:text-gray-700 focus:outline-none">
            <i data-lucide="eye" class="w-5 h-5"></i>
          </button>
        </div>

        <input type="hidden" name="token" value="<?php echo htmlspecialchars($token); ?>">

        <button type="submit"
                class="btn-primary w-full inline-flex items-center justify-center gap-2 rounded-xl px-4 py-3.5 font-bold uppercase tracking-wide">
          <i data-lucide="key-round" class="w-5 h-5"></i>
          <span>Establecer Nueva Contraseña</span>
        </button>
      </form>
      <?php endif; ?>

      <p class="mt-6 text-center text-gray-600">
        <a href="login.php"
           class="font-bold text-[var(--color-primary)] hover:text-[var(--color-secondary)] transition-colors inline-flex items-center gap-2">
           <i data-lucide="log-in" class="w-4 h-4"></i> Volver Al Inicio De Sesión
        </a>
      </p>

    </div>
  </main>
  
  <aside class="hidden md:flex w-1/2 relative">
    <img src="img/BG-FlowCRM.webp" alt="Fondo Login" class="absolute inset-0 w-full h-full object-cover">
    <div class="absolute inset-0 bg-gradient-to-tr from-[#07162d]/70 via-[#07162d]/40 to-[#9e1428]/40"></div>
    <div class="relative z-10 flex flex-col justify-between w-full p-10">
      <div class="flex items-center gap-3">
        <img src="img/favicon.png" class="h-9 w-9 rounded-lg" alt="Logo">
        <span class="text-white/90 font-semibold tracking-wide">OrozDesign Multimedia</span>
      </div>
      <div class="text-white">
        <div class="flex justify-start mb-6">
          <img src="img/LogoFlowCRM.webp" alt="Logo FlowCRM" class="h-16 xl:h-20 w-auto">
        </div>
        <p class="mt-3 text-white/85 max-w-xl">Tu Centro de Control para Gestionar el Crecimiento de tu Negocio</p>
        <ul class="mt-6 grid grid-cols-1 lg:grid-cols-2 gap-3 text-white/90 max-w-2xl">
          <li class="flex items-center gap-3"><i data-lucide="users" class="w-5 h-5"></i> Gestión De Prospectos y Clientes</li>
          <li class="flex items-center gap-3"><i data-lucide="workflow" class="w-5 h-5"></i> Pipeline Visual y Seguimiento</li>
          <li class="flex items-center gap-3"><i data-lucide="calendar-clock" class="w-5 h-5"></i> Agenda, Citas y Recordatorios</li>
          <li class="flex items-center gap-3"><i data-lucide="file-text" class="w-5 h-5"></i> Cotizaciones y Finanzas</li>
        </ul>
      </div>
    </div>
  </aside>

  <script>
    lucide.createIcons();
    const toggleBtn = document.getElementById('togglePass');
    const passInput = document.getElementById('password');
    let visible = false;
    toggleBtn?.addEventListener('click', () => {
      visible = !visible;
      passInput.type = visible ? 'text' : 'password';
      toggleBtn.innerHTML = visible
        ? '<i data-lucide="eye-off" class="w-5 h-5"></i>'
        : '<i data-lucide="eye" class="w-5 h-5"></i>';
      lucide.createIcons();
      passInput.focus();
    });
  </script>
</body>
</html>