Extbase innerhalb eines TYPO3 Authentication Services verwenden

Während der Authentifizierung von Benutzern sind viele Teile von TYPO3 noch nicht (vollständig) initialisiert. Das gilt auch für das Typoscript-Array und ist unter anderem deshalb sinnvoll, weil die mitgelieferten Authentication Services dieses gar nicht benötigen.
Will man auf Extbase basierende Komponenten, beispielsweise einen LDAP Account Service, in seinem eigenen Authentication Service verwenden, muss man das Extbase Framework erst initialisieren, wofür wiederum dessen Typoscript-Configuration geladen sein muss.

Die folgenden PHP-Klassen stellen einen möglichen Ansatz zur Lösung dieses Problems dar, erheben aber keinen Anspruch darauf, als Ideallösung zu gelten.

Der abstrakte Authentication Service macht ein Backup vom aktuell geladenen Typoscript-Array, lädt das Typoscript für Extbase sowie die Extensions static_info_tables_extbase und foobar, initialisiert das Extbase-Framework, ruft die eigentlichen Methoden zur Benutzer-Authentifizierung bzw. zum Laden von Benutzerdaten auf und ersetzt das globale Typoscript-Array anschließend wieder mit dem anfangs angefertigten Backup, um Seiteneffekte auszuschließen.

Der Typoscript Service stellt Methoden zum Laden von Typoscript aus einer Textdatei sowie dem Erzeugen und Zurückspielen eines Typoscript-Array-Backups zur Verfügung.

4 Gedanken zu „Extbase innerhalb eines TYPO3 Authentication Services verwenden

  1. Alexander Pankow (3 comments)

    Hi,

    danke für diesen hilfreichen Tipp! Scheint ganz gut zu funktionieren. =)
    Noch als kleine Anmerkung zu der initAuth()- Methode: Statt das Passwort über initAuth() zu decrypten, verwende doch die processLoginData() Methode. Die bekommt als Parameter übergeben, wie das Passwort übertragen wird.

    Grüße,
    Alexander

  2. Alexander Pankow (3 comments)

    Hi nochmal,

    leider doch nicht so einfach gewesen… es gibt immer wieder Probleme, die Repositories zu verwenden.
    Es kommt zwar zu keinen Fehlern, findAll() und findByUid() bringen bei mir jedoch immer mal wieder leere Ergebnisse. Sie liefern Datensätze mit leeren Werten zurück. Ich weiß jedoch noch nicht so wirklich, warum das eigentlich so ist.
    Version: TYPO3 6.1.7

    Grüße,
    Alexander

  3. Alexander Pankow (3 comments)

    Okay, wieder Korrektur aufgrund eigener Dummheit: Scheint so, als hätte ich genanntes Problem nun doch gelöst. Ich habe einfach an einigen Stellen die Repositories nicht über den ObjectManager bezogen sondern manuell initialisiert bzw. über das GeneralUtility. Das passiert, wenn man kurz vorher noch in nicht-TYPO3-Systemen gearbeitet hat. xD
    Ich hoffe zumindest, dass es jetzt geht und werde es beobachten.

Kommentare sind geschlossen.