PS PrestaShop Principiante

DataFirefly Magic Link — Inicio de sesión sin contraseña

Instalar y configurar el inicio de sesión sin contraseña por enlace de correo en PrestaShop 8 y 9.

Actualizado Versión del módulo 1.0.0

Presentación

DataFirefly Magic Link añade el inicio de sesión sin contraseña a tu tienda PrestaShop 8 o 9. El cliente introduce su correo en la página de inicio de sesión, recibe un enlace seguro de un solo uso, hace clic, confirma y ya está conectado. El formulario clásico de usuario + contraseña sigue disponible: el magic link se suma, no lo sustituye.

El módulo es totalmente autónomo: sin dependencias de Composer, sin servicios externos, sin llamadas a CDN. Todo funciona con el sistema nativo de correos de PrestaShop.

Requisitos

  • PrestaShop 8.0 a 9.x
  • PHP 8.1 o superior
  • MySQL 5.7+ o MariaDB 10.3+
  • Envío de correos operativo (si tus correos de confirmación de pedido salen, ya está)

Instalación

  1. En el back-office, abre Módulos > Gestor de módulos.
  2. Haz clic en Subir un módulo y selecciona el archivo dfmagiclink.zip.
  3. PrestaShop instala el módulo, crea la tabla ps_dfmagiclink_token y registra los hooks automáticamente.
  4. Haz clic en Configurar para abrir la página de ajustes.

Justo tras la instalación, el formulario magic link aparece bajo el formulario estándar de tu tienda, con los ajustes por defecto (enlaces válidos 15 minutos, limitación de tasa activada).

Configuración

Todos los ajustes están en Módulos > Gestor de módulos > DataFirefly Magic Link > Configurar.

Interruptor general. En No, el formulario desaparece del front y los enlaces existentes dejan de funcionar (con un mensaje explícito para el cliente).

Mostrar en la página de inicio de sesión

Controla la inyección del formulario bajo el login estándar. Puedes desactivar la visualización manteniendo el módulo activo, por ejemplo si integras el formulario en otro lugar a través de tu plantilla.

Validez del enlace (minutos)

Tiempo durante el cual un enlace sigue siendo utilizable tras su emisión. Por defecto: 15 minutos. Mínimo 1, máximo 1440 (24 horas). Recomendamos entre 15 y 60 minutos: suficiente para la entrega del correo, corto para limitar la ventana de exposición.

Máx. solicitudes por IP / hora

Tope de solicitudes de enlace aceptadas desde una misma dirección IP en una hora deslizante. Por defecto: 5. Protege contra abusos automatizados.

Máx. solicitudes por correo / hora

Tope de solicitudes para una misma cuenta de cliente en una hora deslizante. Por defecto: 3. Por encima, las solicitudes se ignoran silenciosamente (el mensaje en pantalla sigue siendo genérico para no revelar el estado de la cuenta).

Durante tus pruebas, recuerda subir temporalmente estos topes o vaciar la tabla ps_dfmagiclink_token — de lo contrario alcanzarás rápido el límite de 3 por hora en tu propia cuenta.

Redirección tras el inicio de sesión

Página a la que llega el cliente tras conectarse: Mi cuenta (por defecto), Historial de pedidos o Página de inicio.

Estadísticas y purga

Tres contadores en la parte superior de la página de configuración: tokens activos, conexiones de las últimas 24 horas, enlaces emitidos en 24 horas. El botón Purgar tokens caducados elimina los tokens vencidos y los consumidos hace más de 24 horas.

Recorrido del cliente

  1. El cliente abre la página de inicio de sesión e introduce su correo en el bloque «Iniciar sesión sin contraseña».
  2. El módulo verifica la cuenta, genera un token de 256 bits, almacena su hash SHA-256 y envía el correo. La respuesta en pantalla es intencionalmente genérica («Si existe una cuenta para este correo…») para impedir la enumeración de cuentas.
  3. El cliente hace clic en el botón del correo y llega a una página de confirmación autónoma que lo saluda por su nombre.
  4. Hace clic en «Iniciar sesión»: el token se consume, la sesión de PrestaShop se abre, los hooks nativos de autenticación se disparan, y se redirige a la página configurada.

¿Por qué una página de confirmación? Outlook Safe Links, Gmail y los antivirus corporativos visitan automáticamente los enlaces de los correos recibidos. Sin este paso, esos escáneres consumirían el enlace antes que el cliente. El token solo se consume con el clic real (petición POST), nunca con una simple visita (GET). Es el patrón que usan Slack, Notion y Vercel.

Correos

Las plantillas están en modules/dfmagiclink/mails/<idioma>/ (fr, en, es, de), en HTML (magiclink.html) y texto plano (magiclink.txt). El idioma del correo sigue automáticamente el idioma de la cuenta del cliente.

Variables disponibles: {firstname}, {lastname}, {email}, {magic_link}, {ttl}, {shop_name}, {ip}.

Para personalizar una plantilla, cópiala a la carpeta mails de tu plantilla (themes/tu-plantilla/modules/dfmagiclink/mails/) para que tus cambios sobrevivan a las actualizaciones del módulo.

Seguridad

  • Tokens de 256 bits generados con random_bytes(), codificados en base64 URL-safe.
  • Hash SHA-256 en la base de datos: el token bruto solo existe en el correo. Una fuga de la tabla no proporciona ningún enlace utilizable.
  • Uso único estricto: el token se marca como consumido antes de abrir la sesión.
  • Anti-enumeración: respuesta idéntica exista la cuenta o no.
  • Doble limitación de tasa por IP y por cuenta.
  • CSRF: la petición AJAX está protegida por el token de seguridad nativo de PrestaShop.
  • noindex: todas las páginas del módulo llevan la cabecera X-Robots-Tag: noindex, nofollow, noarchive.

Solución de problemas

El correo no llega

Comprueba en orden: la carpeta de spam del cliente (SPF/DKIM de tu dominio), el límite de tasa (contador «enlaces emitidos» en la configuración) y el estado activo de la cuenta. Puedes confirmar la emisión en el servidor consultando la tabla ps_dfmagiclink_token: debe aparecer una fila con used_at a NULL tras cada solicitud.

«Este enlace ha caducado o ya ha sido utilizado»

El enlace superó su ventana de validez o ya se usó. El cliente puede simplemente solicitar uno nuevo desde la página de inicio de sesión.

El formulario no aparece en la página de inicio de sesión

Comprueba que «Mostrar en la página de inicio de sesión» está activado, luego vacía la caché (Parámetros avanzados > Rendimiento > Vaciar caché). Verifica también que tu plantilla ejecuta el hook displayCustomerLoginFormAfter — es el caso de Classic, Hummingbird y prácticamente todas las plantillas del mercado.

Desinstalación

La desinstalación elimina la tabla ps_dfmagiclink_token y todos los valores de configuración. Ninguna cuenta de cliente se modifica, ninguna contraseña se toca. El inicio de sesión estándar sigue funcionando con normalidad.

¿Te ha resultado útil esta página?

¿Sigues atascado? Contacta con soporte