Die Extension felogin bringt immer wieder Probleme mit sich. Man suche im Internet nach „feuser redirect“, um eine Auswahl der Probleme zu erhaschen. Auch ich habe lange mit einigen Probleme gekämpft und will heute zwei Lösungen vorstellen, mit deren Hilfe man beim Login auf eine gewünschte Seite weiterleiten kann.

Fall 1: Auf eine geschützte Seite weiterleiten

Ein Problem habe ich immer wieder: Der Benutzer soll sich einloggen und danach auf eine Seite kommen, die z.B. sein Profil enthält. Korrekterweise setzt man in der Extension feuser die Optionen „Weiterleitungsmodus“ und „Nach erfolgreicher Anmeldung auf folgende Seite weiterleiten“ entsprechend. Man loggt sich ein… und kommt auf die Startseite. Warum?

Die Profilseite besitzt den Zugriff „Anzeigen, wenn angemeldet“ bzw. nur Zugriff für bestimmte Benutzergruppen. Schwierigkeit ist hier, dass der Link für diese Profilseite, nennen wir sie http://www.seite.de/profil/ von TYPO3 erst generiert wird, wenn der Benutzer angemeldet ist. Mit anderen Worten: Beim Anmelden ist der Link noch nicht valide, als Umleitungslink wird lediglich http://www.seite.de/ weitergeleitet. Die Umleitung funktioniert also (zumindest bei meinen Tests) nur bei Seiten, die keine Zugriffskontrolle besitzen.

Was tun? Per Typoscript kann man das ganze umgehen. Dazu muss man etwas ähnliches wie im folgenden Code in ein Template der Wurzelseite eintragen:

Zwei Conditions werden durch die obigen Zeilen hinzugefügt: Bei der Ersten wird geprüft, ob sich überhaupt jemand angemeldet hat und ob er von der Seite /login/ kommt. Dann wird die Konfig überschrieben und ein Redirect-Header zur HTTP-Antwort mit der gewünschten Zielseite hinzugefügt.

Beim Logoff funktioniert das ganze anders herum.

Alternativ kann man auch nach der GP-Variable filtern, um die Login-/Logout-Aktion abzufangen:

Hier wird lediglich nach den Aktionen login und logout gefahndet.

Fall 2: Umleitung auf die Seite, von der man gekommen ist

Ein weiterer beliebter Fall: Man klickt auf eine Seite, wird auf ein Loginformular umgeleitet und soll nach erfolgreicher Anmeldung auf die Ausgangsseite zurückkehren. Dafür hat felogin den referer eingeführt, doch wie erzeugt man diesen?

Nach langem Herumprobieren habe ich eine Lösung gefunden, die auch dann funktioniert, wenn (wie in einem Fall, bei dem ich das Problem hatte) die Wurzelseite ein Verweis auf eine Unterseite ist und kein RealUrl verwendet wird. Die Lösung funktioniert über das PageNotFoundHandling von TYPO3.

Zunächst erstellt man eine Datei pageNotFoundHandling.php (z.B. unter fileadmin, was nicht so richtig schön ist, ansonsten z.B. unterhalb typo3conf o.ä.):

Danach muss man in der Konfiguration die Variable [‚FE‘][‚pageNotFound_handling‘] mit dem Wert USER_FUNCTION:fileadmin/pageNotFoundHandling.php:user_pageNotFound->pageNotFound setzen. Die Pfade sind natürlich ggf. anzupassen.

Klickt man auf eine geschützte Seite, so löst TYPO3 ein „PageNotFound“-Event aus. Dieses machen wir uns zu Nutze. Wir fragen dazu zunächst den aktuellen Skriptnamen ab (das wäre z.B. „/profil/“). Diesen hängen wir an die Umleitung auf die aktuelle Seite. Wer realrul nutzt, muss hier vermutlich den Linkgenerator von TYPO3 nutzen, um eine schöne URL zu erzeugen. In obigem beispiel wird lediglich ein schlichter Link erzeugt, der den zusätzlichen Parameter „referer“ enthält.

Im Loginformular muss man nun den Weiterleitungsmodus korrekt setzen („Definiert durch Referrer“), dann sollte es funktionieren.