DataFirefly Magic Link — Accesso senza password
Installare e configurare l'accesso senza password tramite link email su PrestaShop 8 e 9.
Panoramica
DataFirefly Magic Link aggiunge l’accesso senza password al tuo negozio PrestaShop 8 o 9. Il cliente inserisce la sua email nella pagina di accesso, riceve un link sicuro monouso, clicca, conferma ed è connesso. Il modulo classico utente + password resta disponibile: il magic link si aggiunge, non lo sostituisce.
Il modulo è completamente autonomo: nessuna dipendenza Composer, nessun servizio esterno, nessuna chiamata CDN. Tutto funziona con il sistema email nativo di PrestaShop.
Requisiti
- PrestaShop da 8.0 a 9.x
- PHP 8.1 o superiore
- MySQL 5.7+ o MariaDB 10.3+
- Invio email funzionante (se le tue email di conferma ordine partono, è tutto a posto)
Installazione
- Nel back-office, apri Moduli > Gestore moduli.
- Clicca su Carica un modulo e seleziona il file
dfmagiclink.zip. - PrestaShop installa il modulo, crea la tabella
ps_dfmagiclink_tokene registra automaticamente gli hook. - Clicca su Configura per aprire la pagina delle impostazioni.
Subito dopo l’installazione, il modulo magic link appare sotto il modulo di accesso standard del negozio, con le impostazioni predefinite (link validi 15 minuti, limitazione attiva).
Configurazione
Tutte le impostazioni si trovano in Moduli > Gestore moduli > DataFirefly Magic Link > Configura.
Attivare Magic Link
Interruttore generale. Su No, il modulo scompare dal front e i link esistenti smettono di funzionare (con un messaggio esplicito per il cliente).
Mostrare nella pagina di accesso
Controlla l’inserimento del modulo sotto il login standard. Puoi disattivare la visualizzazione mantenendo il modulo attivo, ad esempio se integri il modulo altrove tramite il tuo tema.
Validità del link (minuti)
Tempo durante il quale un link resta utilizzabile dopo l’emissione. Predefinito: 15 minuti. Minimo 1, massimo 1440 (24 ore). Consigliamo tra 15 e 60 minuti: abbastanza per la consegna delle email, abbastanza breve per limitare la finestra di esposizione.
Max richieste per IP / ora
Tetto di richieste di link accettate da uno stesso indirizzo IP in un’ora mobile. Predefinito: 5. Protegge dagli abusi automatizzati.
Max richieste per email / ora
Tetto di richieste per uno stesso account cliente in un’ora mobile. Predefinito: 3. Oltre, le richieste vengono ignorate silenziosamente (il messaggio a schermo resta generico per non rivelare lo stato dell’account).
Durante i test, ricordati di alzare temporaneamente questi tetti o di svuotare la tabella ps_dfmagiclink_token — altrimenti raggiungerai in fretta il limite di 3 all’ora sul tuo stesso account.
Reindirizzamento dopo l’accesso
Pagina su cui arriva il cliente dopo l’accesso riuscito: Il mio account (predefinito), Storico ordini o Home page.
Statistiche e pulizia
Tre contatori in cima alla pagina di configurazione: token attivi, accessi delle ultime 24 ore, link emessi in 24 ore. Il pulsante Elimina token scaduti rimuove i token scaduti e quelli consumati da più di 24 ore.
Percorso del cliente
- Il cliente apre la pagina di accesso e inserisce la sua email nel blocco «Accedi senza password».
- Il modulo verifica l’account, genera un token a 256 bit, memorizza il suo hash SHA-256 e invia l’email. La risposta a schermo è volutamente generica («Se esiste un account per questa email…») per impedire l’enumerazione degli account.
- Il cliente clicca sul pulsante nell’email e arriva su una pagina di conferma autonoma che lo saluta per nome.
- Clicca su «Accedi»: il token viene consumato, la sessione PrestaShop si apre, gli hook nativi di autenticazione vengono attivati, poi il reindirizzamento verso la pagina configurata.
Perché una pagina di conferma? Outlook Safe Links, Gmail e gli antivirus aziendali visitano automaticamente i link delle email ricevute. Senza questo passaggio, quegli scanner consumerebbero il link prima del cliente. Il token viene consumato solo al clic reale (richiesta POST), mai alla semplice visita (GET). È lo stesso pattern usato da Slack, Notion e Vercel.
I template si trovano in modules/dfmagiclink/mails/<lingua>/ (fr, en, es, de), in HTML (magiclink.html) e testo semplice (magiclink.txt). La lingua dell’email segue automaticamente la lingua dell’account cliente.
Variabili disponibili: {firstname}, {lastname}, {email}, {magic_link}, {ttl}, {shop_name}, {ip}.
Per personalizzare un template, copialo nella cartella mails del tuo tema (themes/tuo-tema/modules/dfmagiclink/mails/) così le tue modifiche sopravvivono agli aggiornamenti del modulo.
Sicurezza
- Token a 256 bit generati con
random_bytes(), codificati in base64 URL-safe. - Hash SHA-256 nel database: il token grezzo esiste solo nell’email. Una fuga della tabella non fornisce alcun link utilizzabile.
- Uso singolo rigoroso: il token viene marcato come consumato prima dell’apertura della sessione.
- Anti-enumerazione: risposta identica che l’account esista o meno.
- Doppia limitazione per IP e per account.
- CSRF: la richiesta AJAX è protetta dal token di sicurezza nativo PrestaShop.
- noindex: tutte le pagine del modulo portano l’header
X-Robots-Tag: noindex, nofollow, noarchive.
Risoluzione dei problemi
L’email non arriva
Verifica nell’ordine: la cartella spam del cliente (SPF/DKIM del tuo dominio), il limite di frequenza (contatore «link emessi» nella configurazione) e lo stato attivo dell’account. Puoi confermare l’emissione lato server consultando la tabella ps_dfmagiclink_token: dopo ogni richiesta deve apparire una riga con used_at a NULL.
«Questo link è scaduto o è già stato utilizzato»
Il link ha superato la sua finestra di validità o è già stato usato. Il cliente può semplicemente richiederne uno nuovo dalla pagina di accesso.
Il modulo non appare nella pagina di accesso
Verifica che «Mostrare nella pagina di accesso» sia attivo, poi svuota la cache (Parametri avanzati > Prestazioni > Svuota cache). Verifica anche che il tuo tema esegua l’hook displayCustomerLoginFormAfter — è il caso di Classic, Hummingbird e praticamente tutti i temi del mercato.
Disinstallazione
La disinstallazione elimina la tabella ps_dfmagiclink_token e tutti i valori di configurazione. Nessun account cliente viene modificato, nessuna password toccata. L’accesso standard continua a funzionare normalmente.