<?php
require_once 'config/conexion.php';

$mensaje = '';
$tipo_mensaje = 'error';
$token_valido = false;

if (isset($_GET['token'])) {
    $token = $_GET['token'];

    $stmt = $conexion->prepare("SELECT id, token_expiracion FROM usuarios WHERE token_recuperacion = ?");
    $stmt->bind_param("s", $token);
    $stmt->execute();
    $resultado = $stmt->get_result();

    if ($usuario = $resultado->fetch_assoc()) {
        if (strtotime($usuario['token_expiracion']) > time()) {
            $token_valido = true;
        } else {
            $mensaje = "El token ha expirado. Por favor, solicita un nuevo enlace de recuperación.";
        }
    } else {
        $mensaje = "Token no válido.";
    }
    $stmt->close();
} else {
    $mensaje = "No se proporcionó un token.";
}

if ($_SERVER['REQUEST_METHOD'] === 'POST' && $token_valido) {
    $password = $_POST['password'] ?? '';
    $password_confirm = $_POST['password_confirm'] ?? '';

    if (empty($password) || empty($password_confirm)) {
        $mensaje = "Todos los campos son obligatorios.";
    } elseif ($password !== $password_confirm) {
        $mensaje = "Las contraseñas no coinciden.";
    } elseif (strlen($password) < 8) {
        $mensaje = "La contraseña debe tener al menos 8 caracteres.";
    } else {
        $password_hash = password_hash($password, PASSWORD_DEFAULT);
        
        $stmt = $conexion->prepare("UPDATE usuarios SET password = ?, token_recuperacion = NULL, token_expiracion = NULL WHERE token_recuperacion = ?");
        $stmt->bind_param("ss", $password_hash, $token);
        
        if ($stmt->execute()) {
            $mensaje = "¡Contraseña actualizada con éxito! Ya puedes iniciar sesión.";
            $tipo_mensaje = 'exito';
            $token_valido = false; // Para ocultar el formulario
        } else {
            $mensaje = "Error al actualizar la contraseña.";
        }
        $stmt->close();
    }
}

?>
<!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</title>
    <link rel="stylesheet" href="css/estilos.css">
    <style>
        .login-container { max-width: 400px; margin: 100px auto; padding: 30px; background: #fff; border-radius: 12px; box-shadow: 0 5px 20px rgba(0,0,0,0.1); }
        .login-container h2 { text-align: center; margin-bottom: 25px; }
        .form-group { margin-bottom: 20px; }
        .form-group label { display: block; margin-bottom: 8px; }
        .form-group input { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 8px; }
        .mensaje { padding: 15px; margin-bottom: 20px; border-radius: 8px; text-align: center; }
        .mensaje-exito { background-color: #d4edda; color: #155724; }
        .mensaje-error { background-color: #f8d7da; color: #721c24; }
    </style>
</head>
<body>
    <div class="login-container">
        <h2>Restablecer Contraseña</h2>
        
        <?php if (!empty($mensaje)): ?>
            <div class="mensaje mensaje-<?php echo $tipo_mensaje; ?>">
                <?php echo $mensaje; ?>
            </div>
        <?php endif; ?>

        <?php if ($token_valido): ?>
            <form method="POST" action="">
                <input type="hidden" name="token" value="<?php echo htmlspecialchars($token); ?>">
                <div class="form-group">
                    <label for="password">Nueva Contraseña</label>
                    <input type="password" id="password" name="password" required>
                </div>
                <div class="form-group">
                    <label for="password_confirm">Confirmar Nueva Contraseña</label>
                    <input type="password" id="password_confirm" name="password_confirm" required>
                </div>
                <button type="submit" class="btn btn-filtrar" style="width:100%;">Restablecer</button>
            </form>
        <?php else: ?>
            <p style="text-align:center; margin-top:20px;">
                <a href="login.php">Ir a Iniciar Sesión</a>
            </p>
        <?php endif; ?>
    </div>
</body>
</html>
