PS PrestaShop Początkujący

DataFirefly Magic Link: logowanie bez hasła

Instalacja i konfiguracja logowania bez hasła przez link e-mail w PrestaShop 8 i 9.

Zaktualizowano Wersja modułu 1.0.0

Prezentacja

DataFirefly Magic Link dodaje do Twojego sklepu PrestaShop 8 lub 9 logowanie bez hasła. Klient wpisuje adres e-mail na stronie logowania, otrzymuje bezpieczny link jednorazowego użytku, klika, potwierdza i jest zalogowany. Klasyczny formularz z loginem i hasłem pozostaje dostępny: magic link go uzupełnia, a nie zastępuje.

Moduł jest w pełni samodzielny: żadnych zależności Composera, żadnej usługi zewnętrznej, żadnych wywołań CDN. Wszystko działa na natywnym systemie e-maili PrestaShop.

Wymagania

  • PrestaShop 8.0 do 9.x
  • PHP 8.1 lub nowsze
  • MySQL 5.7+ albo MariaDB 10.3+
  • Działająca wysyłka e-maili (jeśli Twoje e-maile z potwierdzeniem zamówienia dochodzą, warunek jest spełniony)

Instalacja

  1. W back office otwórz Moduły > Menedżer modułów.
  2. Kliknij Zainstaluj moduł i wybierz plik dfmagiclink.zip.
  3. PrestaShop instaluje moduł, tworzy tabelę ps_dfmagiclink_token i automatycznie rejestruje hooki.
  4. Kliknij Konfiguruj, aby otworzyć stronę ustawień.

Zaraz po instalacji formularz magic link pojawia się pod standardowym formularzem logowania w Twoim sklepie, z ustawieniami domyślnymi (linki ważne 15 minut, rate limiting włączony).

Konfiguracja

Wszystkie ustawienia znajdują się w Moduły > Menedżer modułów > DataFirefly Magic Link > Konfiguruj.

Przełącznik główny. Ustawiony na Nie usuwa formularz z frontu, a istniejące linki przestają działać (klient dostaje czytelny komunikat).

Wyświetlaj na stronie logowania

Steruje wstawianiem formularza pod standardowym logowaniem. Możesz wyłączyć wyświetlanie, zachowując moduł aktywny, na przykład jeśli osadzasz formularz w innym miejscu przez własny motyw.

Czas ważności (minuty)

Czas, przez jaki link pozostaje użyteczny po wysłaniu. Domyślnie: 15 minut. Minimum 1, maksimum 1440 (24 godziny). Zalecamy zakres od 15 do 60 minut: wystarczająco długo na doręczenie e-maila, wystarczająco krótko, aby ograniczyć okno ekspozycji.

Maksymalna liczba żądań na IP i godzinę

Limit żądań o link akceptowanych z jednego adresu IP w ruchomym oknie godzinnym. Domyślnie: 5. Chroni przed zautomatyzowanymi próbami nadużyć.

Maksymalna liczba żądań na e-mail i godzinę

Limit żądań dla jednego konta klienta w ruchomym oknie godzinnym. Domyślnie: 3. Powyżej limitu żądania są po cichu ignorowane (wyświetlany komunikat pozostaje ogólny, aby nie ujawniać stanu konta).

Na czas testów tymczasowo podnieś te limity albo wyczyść tabelę ps_dfmagiclink_token, w przeciwnym razie szybko wyczerpiesz limit 3 żądań na godzinę na własnym koncie.

Przekierowanie po zalogowaniu

Strona, na którą trafia klient po udanym logowaniu: Moje konto (domyślnie), Historia zamówień albo Strona główna.

Statystyki i czyszczenie

Trzy liczniki na górze strony konfiguracji: aktywne tokeny, logowania z ostatnich 24 godzin, linki wysłane w ciągu 24 godzin. Przycisk Wyczyść wygasłe tokeny usuwa tokeny przeterminowane oraz tokeny zużyte starsze niż 24 godziny.

Ścieżka klienta

  1. Klient otwiera stronę logowania i wpisuje swój e-mail w bloku „Logowanie bez hasła”.
  2. Moduł sprawdza konto, generuje token 256-bitowy, zapisuje jego hash SHA-256 i wysyła e-mail. Odpowiedź na ekranie jest celowo ogólna („Jeśli konto o tym adresie istnieje…”), aby uniemożliwić enumerację kont.
  3. Klient klika przycisk w e-mailu i trafia na samodzielną stronę potwierdzenia z wyświetlonym imieniem.
  4. Klika „Zaloguj mnie”: token zostaje zużyty, sesja PrestaShop otwarta, natywne hooki uwierzytelniania wyzwolone, a następnie następuje przekierowanie na skonfigurowaną stronę.

Po co strona potwierdzenia? Outlook Safe Links, Gmail i firmowe antywirusy automatycznie odwiedzają linki w odebranych e-mailach. Bez tego kroku skanery zużywałyby link przed klientem. Token jest zużywany wyłącznie przy realnym kliknięciu (żądanie POST), nigdy przy samej wizycie (GET). To wzorzec stosowany przez Slack, Notion i Vercel.

E-maile

Szablony znajdują się w modules/dfmagiclink/mails/<jezyk>/ (fr, en, es, de), w wersji HTML (magiclink.html) i tekstowej (magiclink.txt). Język e-maila automatycznie odpowiada językowi konta klienta.

Dostępne zmienne: {firstname}, {lastname}, {email}, {magic_link}, {ttl}, {shop_name}, {ip}.

Aby dostosować szablon, skopiuj go do katalogu mails swojego motywu (themes/twoj-motyw/modules/dfmagiclink/mails/), dzięki czemu zmiany przetrwają aktualizacje modułu.

Bezpieczeństwo

  • Tokeny 256-bitowe generowane przez random_bytes(), kodowane w base64 bezpiecznym dla adresów URL.
  • Hash SHA-256 w bazie: surowy token istnieje wyłącznie w e-mailu. Wyciek tabeli nie daje żadnego użytecznego linku.
  • Ścisłe jednorazowe użycie: token jest oznaczany jako zużyty przed otwarciem sesji.
  • Ochrona przed enumeracją: odpowiedź jest identyczna niezależnie od tego, czy konto istnieje.
  • Podwójny rate limiting per IP i per konto.
  • CSRF: żądanie AJAX jest chronione natywnym tokenem bezpieczeństwa PrestaShop.
  • noindex: wszystkie strony modułu wysyłają nagłówek X-Robots-Tag: noindex, nofollow, noarchive.

Rozwiązywanie problemów

E-mail nie dociera

Sprawdź po kolei: folder spamu u klienta (SPF i DKIM Twojej domeny), limit żądań (licznik „wysłane linki” w konfiguracji) oraz to, czy konto klienta jest aktywne. Wysyłkę po stronie serwera potwierdzisz, zaglądając do tabeli ps_dfmagiclink_token: po każdym żądaniu powinien pojawić się wiersz z used_at równym NULL.

Link przekroczył czas ważności albo został już wykorzystany. Klient może po prostu poprosić o nowy link na stronie logowania.

Formularz nie pojawia się na stronie logowania

Sprawdź, czy opcja „Wyświetlaj na stronie logowania” jest włączona, a następnie wyczyść cache (Ustawienia zaawansowane > Wydajność > Wyczyść cache). Sprawdź też, czy Twój motyw faktycznie wykonuje hook displayCustomerLoginFormAfter, robią to motywy Classic i Hummingbird oraz niemal wszystkie motywy dostępne na rynku.

Deinstalacja

Deinstalacja usuwa tabelę ps_dfmagiclink_token i wszystkie wartości konfiguracji. Żadne konto klienta nie jest modyfikowane, żadne hasło nie jest ruszane. Standardowe logowanie działa dalej normalnie.

Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia