Zum Inhalt springen

ldap_authentification & Weiterleitung nach Login

Erstellt am 23. August 2007 · 1 Antwort · letzte Antwort am 24. August 2007

Tags: Frontend-Benutzer, Frage

Unbekannter Benutzer ·

hi,

ich benutze TYPO3 4.0.2. Benutzer sollen sich auf dem Frontend über ein LDAP Server authentifizieren und nach erfolgreichem Login auf eine für die Benutzergruppe angepasste Seite weitergeleitet werden. Genau da hab ich grad ein Problem.

meine LDAP Extension ist die "ldap_authentification". Die Anmeldung funktioniert tadellos. was das ldap angeht hab ich also keine probleme. Ich benutze diese Extension, weil sie mir keine daten aus LDAP importiert, sondern lediglich temporäre Benutzer anlegt, welche nach dem Logout wieder gelöscht werden. So habe ich also keine Redundanz der Daten.

Nun habe ich noch die Extension "newloginbox redirect" installiert, damit ich nach dem login eine weiterleitung für benutzer und gruppen angeben kann. Mit der BetterLoginBox funktioniert dies auch. Ich gebe meiner Gruppe eine Zielseite und da lande ich dann auch drauf (hier keine LDAP Daten).

Versuche ich jetzt mich über das Loginfenster der ldap extension einzuloggen funktioniert die weiterleitung nicht (hier sind es daten aus LDAP).

Meine Frage nun: wie kann ich es realisieren, dass LDAP Benutzer auf eine der Gruppe zugewiesenen Zielseite weitergeleitet werden?

danke schonmal 🙂

Unbekannter Benutzer · · Beste Antwort

hi,

ich nochmal. Nach weiterem erfolglosem Suchen habe ich jetzt ne eigene Lösung programmiert.

Nochmal kurz die Situation geschildert: Ich möchte ldap_authentification nutzen um mich per LDAP am Frontend anzumelden. Jedoch soll nicht jeder LDAP User nach dem Login auf der gleichen Seite landen, also habe ich eine weitere Extension installiert (sv_login_redirect). Mit dieser kann ich FrontendGruppen eine Zielseite angeben. Problem war jetzt diese Zielseite mit ldap_authentification zu verknüpfen, sprich, dass nach dem LDAP Login die Zielseite der jeweiligen Gruppe geöffnet wird.

Lösung meines Problems:
In der Datei "class.tx_ldap_authentification_pi1.php" ab Zeile 97 stehen folgende zwei Zeilen:

$target=$this->pi_getFFvalue($this->cObj->data['pi_flexform'],'inputTarget');
if ($target=='') $target = $GLOBALS['TSFE']->id;

Diese zwei Zeilen habe ich auskommentiert und direkt drunter folgendes eingefügt:

if($_POST[logintype] == 'login')
{
      // verknüpfte GruppenID des ausgewählten LDAP Servers auslesen
      $query = $GLOBALS['TYPO3_DB']->SELECTquery(
        "groupid",
        "tx_LDAPAUTH_server",
        "uid=".$this->piVars['auswahl'],
        "",
        "groupid",
        "1"
      );
      $res = $GLOBALS['TYPO3_DB']->sql(TYPO3_db, $query);
      $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
      $group_id = $row['groupid'];

      // Zielseite der jeweiligen Gruppe auslesen
      $query = $GLOBALS['TYPO3_DB']->SELECTquery(
        "tx_svloginredirect_redirect",
        "fe_groups",
        "uid=".$group_id,
        "",
        "tx_svloginredirect_redirect",
        "1"
      );
      $res = $GLOBALS['TYPO3_DB']->sql(TYPO3_db, $query);
      $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
      $redirect_page_id = $row['tx_svloginredirect_redirect'];

      // falls Zielseite vorhanden, diese übernehmen,
      //ansonsten die eingetragene Zielseite des LDAP Loginfensters wählen
      if(($redirect_page_id != '') && ($redirect_page_id != NULL))
      {
          $target = $redirect_page_id;
      }
      else
      {
          $target=$this->pi_getFFvalue($this->cObj->data['pi_flexform'],'inputTarget');
          // falls keine Zielseite vorhanden, aktuelle PAGE ID übernehmen
          if ($target=='') $target = $GLOBALS['TSFE']->id;
      }
}

Nun passiert folgendes: gibt man der Gruppe eine Zielseite an, wird diese nach dem erfolgreichen Login ausgewählt. Hat man keine Zielseite eingetragen, wird jene Zielseite genommen welche man im Loginfenster der LDAP Extension eingetragen hat. Ein Problem besteht noch darin, dass wenn man garkeine Zielseite eingetragen hat, man eigentlich auf der gleichen Seite landen sollte wo auch das Loginfenster steht. Das passiert auch, aber man erhält eine MYSQL Fehlermeldung. Das gleiche passiert wenn man als Zielseite die Seite mit dem Loginfenster auswählt. Ich weis noch nicht genau warum das passiert.

Mein Ziel war es, auf der Website nur eine Logineingabemöglichkeit anzubieten, und die Benutzer je nach Gruppenzugehörigkeit zu filtern und auf unterschiedliche Seiten weiterzuleiten. Jetzt stellt sich mir aber die Frage, wie ich denn die LDAP Benutzer unterschiedlichen Gruppen zuweisen kann? :o

vielleicht weis da einer Rat.