Wenn man eine Weiterleitung nach einem Login einrichtet sollte man folgende Tatsache nicht vergessen:
Der durch die "Passwort-Vergessen"- Funktion generierte One-Time-Login funktioniert dann nicht mehr.
Der Grund ist das man zunächst auf einer anderen Seite landet, sich dann wieder zum User-Profil durchklickt (der Hash dabei verloren geht) und man aufgefordert wird sein altes Passwort einzugeben um ein neues zu erstellen. Klar das sich dann der User ärgert und denkt: "Wie soll ich ein neues Passwort vergeben wenn ich mein altes vergessen habe?"
Lösung: Bei Einrichtung einer Weiterleitung muss im Code (oder einer Rule) abgefragt werden ob im aufgerufenen Pfad die Wortfolge „user/reset“ vorkommt. Wenn die Wortfolge NICHT vorkommt wird man an die gewünschte eingetragene URL weitergeleitet.
Für eine Rule könnte man folgendes anlegen:
{ "rules_login" : {
"LABEL" : "Login",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"ON" : { "user_login" : [] },
"IF" : [
{ "NOT text_matches" : { "text" : [ "site:current-page:path" ], "match" : "user\/reset" } }
],
"DO" : [ { "redirect" : { "url" : "meine-ziel-url", "force" : "0" } } ]
} }
Die Problematik hatte ich auch schon bei einigen Projekten :)
Das Ganze ist auch hier gut beschrieben:
http://stackoverflow.com/questions/10965471/drupal-rules-one-time-login-redirect-issue
Neuen Kommentar hinzufügen