Schönere Passwort-Vergessen-Funktion mit Contao
04.12.2011 14:40 von Jan Theofel (Kommentare: 3)
Schönere Passwort-Vergessen-Funktion mit Contao
Beim Anfordern eines vergessenen Passworts bietet der Contao-Core nur eine Seite über die sowohl das Anfordern des Passworts als auch das Eingeben des neuen Passworts erfolgt. Um den Seitenbesucher besser zu zeigen, was zu tun ist, ist es jedoch erforderlich, dies auf zwei Seiten zu verteilen. Auf der einen Seite wird nur Anforderung beschrieben, auf der zweiten beispielsweise wie das Passwort aufgebaut sein muss.
Benötigt:
- Serverumgebung mit der Möglichkeit für Rewrite-Regeln (z.B. mittels .htaccess)
Anleitung:
- Lege folgende Seitenstrukur an oder ergänze die vorhandene Seitenstruktur entsprechend:

Bei mir lauten die URLs dazu:
/login.html
/login/passwort-vergessen.html
/login/passwort-vergessen/bestaetigung.html
/login/passwort-zuruecksetzen.html
/login/passwort-zuruecksetzen/bestaetigung.html - Lege ein Modul vom Typ "Passwort vergessen" an. Als Weiterleitungsseite verwendest du die erste Bestätigungsseite in der Liste, als Bestätigungsseite wählst du die zweite aus.
- Auf der Seite "Passwort vergessen" beschreibst du, dass man seine E-Mail-Adresse eingeben muss und dann ein neues Passwort erhält. Dort fügst du das Modul aus dem 2. Schritt ein. Auf der zugehörigen Bestätigungsseite beschreibst du, dass man nun eine E-Mail erhält und den darin befindlichen Link anklicken soll.
- Auf der Seite "Passwort zurücksetzen" beschreibst du, was ein sicheres Passwort ausmachst und fügst darunter das identische Modul ein. Auf der Bestätigungsseite reicht eine "alles ok" Meldung und ein Link zum Login.
- Nun wird beim erzeugen der E-Mail mit dem Bestätigungslink immer noch auf /login/passwort-vergessen.html?token=xxx verlinkt. Hier bietet Contao keine Konfiguration an, daher erledigen wir das über eine Weiterleitung de Aufrufe mit dem Token in der .htaccess:
# Rewrite for password reset
RewriteCond %{QUERY_STRING} token=(.*) [NC]
RewriteRule .*login\/passwort-vergessen.html$ /login/passwort-zuruecksetzen.html?token=%1 [L,R=301]
Diese Zeilen musst du vor der allgemeinen Weiterleitungsregel von Contao einfügen und natürlich auf deine Seitennamen anpassen.

Einen Kommentar schreiben
Kommentar von Christian | 02.02.2012
Hallo,
Gibt es auch eine Möglichkeit, mit der man das nicht per .htaccess machen muss?
Kommentar von Jan Theofel | 06.02.2012
Das geht nur durch eine Anpassung im Contao-Core und ist damit nicht empfehlenswert. Was spricht gegen den Einsatz der .htaccess?
Kommentar von Christian | 06.02.2012
Prinzipiell natürlich nichts. Ich schaus mir mal an.
Gruß
C