# DataFirefly Magic Link: volledige gids

> Overzicht DataFirefly Magic Link voegt een wachtwoordloze aanmelding toe aan uw PrestaShop 8- of 9-winkel. De klant voert zijn e-mailadres in op de inlogpagina, ontvangt een beveiligde link voor eenmalig…

- Pagina: <https://www.datafirefly.com/nl/documentation/dfmagiclink/>
- Taal: nl
- Bijgewerkt op: 2026-08-27
- Andere talen: [fr](https://www.datafirefly.com/documentation/dfmagiclink/index.md), [en](https://www.datafirefly.com/en/documentation/dfmagiclink/index.md), [es](https://www.datafirefly.com/es/documentation/dfmagiclink/index.md), [de](https://www.datafirefly.com/de/documentation/dfmagiclink/index.md), [it](https://www.datafirefly.com/it/documentation/dfmagiclink/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfmagiclink/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfmagiclink/index.md)
- Index: <https://www.datafirefly.com/nl/documentation/llms.txt>

## Overzicht

DataFirefly Magic Link voegt een wachtwoordloze aanmelding toe aan uw PrestaShop 8- of 9-winkel. De klant voert zijn e-mailadres in op de inlogpagina, ontvangt een beveiligde link voor eenmalig gebruik, klikt, bevestigt, en is aangemeld. Het klassieke formulier met gebruikersnaam en wachtwoord blijft beschikbaar: de magic link komt erbij, hij vervangt het niet.

De module is volledig autonoom: geen Composer-afhankelijkheid, geen externe dienst, geen CDN-aanroep. Alles werkt met het native e-mailsysteem van PrestaShop.

## Vereisten

- PrestaShop 8.0 tot 9.x
- PHP 8.1 of hoger
- MySQL 5.7+ of MariaDB 10.3+
- Werkende e-mailverzending (vertrekken uw orderbevestigingsmails, dan zit het goed)

## Installatie

1. Open in de backoffice **Modules > Modulebeheer**.
2. Klik op **Een module installeren** en selecteer het bestand `dfmagiclink.zip`.
3. PrestaShop installeert de module, maakt de tabel `ps_dfmagiclink_token` aan en registreert de hooks automatisch.
4. Klik op **Configureren** om de instellingenpagina te openen.

Direct na de installatie verschijnt het magic-linkformulier onder het standaard inlogformulier van uw winkel, met de standaardinstellingen (links 15 minuten geldig, rate limiting ingeschakeld).

## Configuratie

Alle instellingen staan in **Modules > Modulebeheer > DataFirefly Magic Link > Configureren**.

### Magic Link inschakelen

Hoofdschakelaar. Op _Nee_ verdwijnt het formulier uit de front en werken de bestaande links niet meer (met een duidelijke melding voor de klant).

### Tonen op de inlogpagina

Regelt de injectie van het formulier onder de standaardlogin. U kunt de weergave uitschakelen en de module toch actief houden, bijvoorbeeld als u het formulier elders via uw thema integreert.

### Geldigheidsduur (minuten)

Duur waarin een link na uitgifte bruikbaar blijft. Standaard: **15 minuten**. Minimaal 1, maximaal 1440 (24 uur). Wij raden aan tussen 15 en 60 minuten te blijven: lang genoeg voor de e-mailbezorging, kort genoeg om het blootstellingsvenster te beperken.

### Max. aanvragen per IP / uur

Plafond aan linkaanvragen dat vanaf eenzelfde IP-adres binnen een glijdend uur wordt geaccepteerd. Standaard: **5**. Beschermt tegen geautomatiseerde misbruikpogingen.

### Max. aanvragen per e-mail / uur

Plafond aan aanvragen voor eenzelfde klantaccount binnen een glijdend uur. Standaard: **3**. Daarboven worden de aanvragen stilzwijgend genegeerd (de getoonde melding blijft generiek om de accountstatus niet prijs te geven).

Verhoog tijdens uw tests deze plafonds tijdelijk of leeg de tabel `ps_dfmagiclink_token`, anders bereikt u snel de limiet van 3 aanvragen per uur op uw eigen account.

### Redirect na aanmelding

Pagina waarnaar de klant na een geslaagde aanmelding wordt gestuurd: **Mijn account** (standaard), **Bestelgeschiedenis** of **Homepage**.

### Statistieken en opschoning

Drie tellers bovenaan de configuratiepagina: actieve tokens, aanmeldingen van de laatste 24 uur, uitgegeven links over 24 uur. De knop **Verlopen tokens opschonen** verwijdert de verlopen tokens en de verbruikte tokens ouder dan 24 uur.

## Klanttraject

1. De klant opent de inlogpagina en voert zijn e-mail in in het blok "Aanmelden zonder wachtwoord".
2. De module controleert het account, genereert een token van 256 bits, slaat de SHA-256-hash ervan op en verstuurt de e-mail. Het schermantwoord is bewust generiek ("Als er een account bestaat voor dit e-mailadres...") om accountenumeratie te verhinderen.
3. De klant klikt op de knop in de e-mail en komt op een autonome **bevestigingspagina** die zijn voornaam toont.
4. Hij klikt op "Aanmelden": het token wordt verbruikt, de PrestaShop-sessie wordt geopend, de native authenticatiehooks worden geactiveerd, en daarna volgt de redirect naar de geconfigureerde pagina.

**Waarom een bevestigingspagina?** Outlook Safe Links, Gmail en bedrijfsantivirussen bezoeken automatisch de links van ontvangen e-mails. Zonder deze stap zouden die scanners de link verbruiken vóór de klant. Het token wordt pas bij de echte klik verbruikt (POST-request), nooit bij een simpel bezoek (GET). Dat is het patroon dat Slack, Notion en Vercel gebruiken.

## E-mails

De sjablonen staan in `modules/dfmagiclink/mails//` (fr, en, es, de), in HTML (`magiclink.html`) en platte tekst (`magiclink.txt`). De taal van de e-mail volgt automatisch de taal van het klantaccount.

Beschikbare variabelen: `{firstname}`, `{lastname}`, `{email}`, `{magic_link}`, `{ttl}`, `{shop_name}`, `{ip}`.

Om een sjabloon aan te passen, kopieert u het naar de mailmap van uw thema (`themes/uw-thema/modules/dfmagiclink/mails/`), zodat uw wijzigingen bij module-updates behouden blijven.

## Beveiliging

- **Tokens van 256 bits**, gegenereerd via `random_bytes()`, gecodeerd in URL-veilige base64.
- **SHA-256-hash in de database**: het ruwe token bestaat alleen in de e-mail. Een lek van de tabel levert geen enkele bruikbare link op.
- **Strikt eenmalig gebruik**: het token wordt als verbruikt gemarkeerd vóór het openen van de sessie.
- **Anti-enumeratie**: identiek antwoord, of het account nu bestaat of niet.
- **Dubbele rate limiting** per IP en per account.
- **CSRF**: de AJAX-aanvraag is beschermd door het native PrestaShop-beveiligingstoken.
- **noindex**: alle pagina's van de module dragen de header `X-Robots-Tag: noindex, nofollow, noarchive`.

## Probleemoplossing

### De e-mail komt niet aan

Controleer in deze volgorde: de spammap van de klant (SPF/DKIM van uw domein), de rate limit (teller "uitgegeven links" in de configuratie) en de actieve status van het klantaccount. U kunt de uitgifte aan serverzijde bevestigen via de tabel `ps_dfmagiclink_token`: na elke aanvraag moet er een regel met `used_at` op NULL verschijnen.

### "Deze link is verlopen of al gebruikt"

De link heeft zijn geldigheidsduur overschreden of is al gebruikt. De klant kan simpelweg een nieuwe link aanvragen vanaf de inlogpagina.

### Het formulier verschijnt niet op de inlogpagina

Controleer of "Tonen op de inlogpagina" is ingeschakeld en leeg daarna de cache (**Geavanceerde instellingen > Prestaties > Cache legen**). Controleer ook of uw thema de hook `displayCustomerLoginFormAfter` uitvoert, wat het geval is bij de thema's Classic en Hummingbird en vrijwel alle thema's op de markt.

## De-installatie

De de-installatie verwijdert de tabel `ps_dfmagiclink_token` en alle configuratiewaarden. Er wordt geen enkel klantaccount gewijzigd en geen enkel wachtwoord aangeraakt. De standaardaanmelding blijft normaal werken.
