DataFirefly Magic Link — Connexion sans mot de passe
Installer et configurer la connexion sans mot de passe par lien email sur PrestaShop 8 et 9.
Présentation
DataFirefly Magic Link ajoute une connexion sans mot de passe à votre boutique PrestaShop 8 ou 9. Le client saisit son adresse email sur la page de connexion, reçoit un lien sécurisé à usage unique, clique, confirme, et il est connecté. Le formulaire classique identifiant + mot de passe reste disponible : le magic link s’y ajoute, il ne le remplace pas.
Le module est entièrement autonome : aucune dépendance Composer, aucun service externe, aucun appel CDN. Tout fonctionne avec le système d’emails natif de PrestaShop.
Prérequis
- PrestaShop 8.0 à 9.x
- PHP 8.1 ou supérieur
- MySQL 5.7+ ou MariaDB 10.3+
- Envoi d’emails fonctionnel (si vos emails de confirmation de commande partent, c’est bon)
Installation
- Dans le back-office, ouvrez Modules > Gestionnaire de modules.
- Cliquez sur Installer un module et sélectionnez le fichier
dfmagiclink.zip. - PrestaShop installe le module, crée la table
ps_dfmagiclink_tokenet enregistre les hooks automatiquement. - Cliquez sur Configurer pour ouvrir la page de réglages.
Dès l’installation, le formulaire magic link apparaît sous le formulaire de connexion standard de votre boutique, avec les réglages par défaut (liens valables 15 minutes, rate limiting activé).
Configuration
Tous les réglages se trouvent dans Modules > Gestionnaire de modules > DataFirefly Magic Link > Configurer.
Activer Magic Link
Interrupteur général. Sur Non, le formulaire disparaît du front et les liens existants cessent de fonctionner (message explicite pour le client).
Afficher sur la page de connexion
Contrôle l’injection du formulaire sous le login standard. Vous pouvez désactiver l’affichage tout en gardant le module actif, par exemple si vous intégrez le formulaire ailleurs via votre thème.
Durée de validité (minutes)
Durée pendant laquelle un lien reste utilisable après émission. Par défaut : 15 minutes. Minimum 1, maximum 1440 (24 heures). Nous recommandons de rester entre 15 et 60 minutes : assez long pour la remise des emails, assez court pour limiter la fenêtre d’exposition.
Max requêtes par IP / heure
Plafond de demandes de lien acceptées depuis une même adresse IP sur une heure glissante. Par défaut : 5. Protège contre les tentatives d’abus automatisées.
Max requêtes par email / heure
Plafond de demandes pour un même compte client sur une heure glissante. Par défaut : 3. Au-delà, les demandes sont silencieusement ignorées (le message affiché reste générique pour ne pas divulguer l’état du compte).
Pendant vos tests, pensez à augmenter temporairement ces plafonds ou à vider la table ps_dfmagiclink_token — sinon vous atteindrez vite la limite de 3 demandes par heure sur votre propre compte.
Redirection après connexion
Page vers laquelle le client est envoyé après une connexion réussie : Mon compte (défaut), Historique des commandes ou Page d’accueil.
Statistiques et purge
Trois compteurs en haut de la page de configuration : tokens actifs, connexions des dernières 24 heures, liens émis sur 24 heures. Le bouton Purger les tokens expirés supprime les tokens périmés et les tokens consommés de plus de 24 heures.
Parcours client
- Le client ouvre la page de connexion et saisit son email dans le bloc « Connexion sans mot de passe ».
- Le module vérifie le compte, génère un token de 256 bits, stocke son hash SHA-256 et envoie l’email. La réponse à l’écran est volontairement générique (« Si un compte existe pour cet email… ») pour empêcher l’énumération de comptes.
- Le client clique sur le bouton dans l’email et arrive sur une page de confirmation autonome affichant son prénom.
- Il clique sur « Me connecter » : le token est consommé, la session PrestaShop est ouverte, les hooks d’authentification natifs sont déclenchés, puis redirection vers la page configurée.
Pourquoi une page de confirmation ? Outlook Safe Links, Gmail et les antivirus d’entreprise visitent automatiquement les liens des emails reçus. Sans cette étape, ces scanners consommeraient le lien avant le client. Le token n’est consommé qu’au clic réel (requête POST), jamais à la simple visite (GET). C’est le pattern utilisé par Slack, Notion et Vercel.
Emails
Les templates se trouvent dans modules/dfmagiclink/mails/<langue>/ (fr, en, es, de), en HTML (magiclink.html) et texte brut (magiclink.txt). La langue de l’email suit automatiquement la langue du compte client.
Variables disponibles : {firstname}, {lastname}, {email}, {magic_link}, {ttl}, {shop_name}, {ip}.
Pour personnaliser un template, copiez-le dans le dossier mails de votre thème (themes/votre-theme/modules/dfmagiclink/mails/) afin de préserver vos modifications lors des mises à jour du module.
Sécurité
- Tokens 256 bits générés via
random_bytes(), encodés en base64 URL-safe. - Hash SHA-256 en base : le token brut n’existe que dans l’email. Une fuite de la table ne donne aucun lien exploitable.
- Usage unique strict : le token est marqué consommé avant l’ouverture de session.
- Anti-énumération : réponse identique que le compte existe ou non.
- Rate limiting double par IP et par compte.
- CSRF : la demande AJAX est protégée par le token de sécurité natif PrestaShop.
- noindex : toutes les pages du module portent l’en-tête
X-Robots-Tag: noindex, nofollow, noarchive.
Dépannage
L’email n’arrive pas
Vérifiez dans l’ordre : le dossier spam du client (SPF/DKIM de votre domaine), le rate limit (compteur « liens émis » dans la config), et l’état actif du compte client. Vous pouvez confirmer l’émission côté serveur en consultant la table ps_dfmagiclink_token : une ligne avec used_at à NULL doit apparaître après chaque demande.
« Ce lien a expiré ou a déjà été utilisé »
Le lien a dépassé sa durée de validité, ou a déjà servi. Le client peut simplement redemander un lien depuis la page de connexion.
Le formulaire n’apparaît pas sur la page de connexion
Vérifiez que « Afficher sur la page de connexion » est activé, puis videz le cache (Paramètres avancés > Performances > Vider le cache). Vérifiez aussi que votre thème exécute bien le hook displayCustomerLoginFormAfter — c’est le cas des thèmes Classic et Hummingbird et de la quasi-totalité des thèmes du marché.
Désinstallation
La désinstallation supprime la table ps_dfmagiclink_token et toutes les valeurs de configuration. Aucun compte client n’est modifié, aucun mot de passe touché. La connexion standard continue de fonctionner normalement.