TYPO3 Auth-Service

Schumiel

Lieutenant
Registriert
Jan. 2010
Beiträge
825
Hallo,

ich bin dabei, fremde Daten mit TYPO3 fe_users zu verknüpfen. Dies möchte ich gern über Auth-Service von TYPO3 nutzen.
Die Doku (https://docs.typo3.org/typo3cms/Typo3ServicesReference/8.7/Authentication/) dazu habe ich mir durchgelesen. Aber auch ein paar Beiträge diverser Blogseiten. U.a. diese https://www.andrerinas.de/tutorials/typo3-einen-auth-service-erstellen-ab-62.html?no_cache=1

Grundlegend ist meine Umsetzung die selbe. Wenn ich richtig recherchiert habe, besteht hier kein wesentlicher Unterschied zu TYPO3 6.2 und 8.7 in diesem Bereich.

Was ich bisher nicht verstanden habe, und grade etwas daran verzweifle, warum ich, wenn ich ein var_dump() oder die() in getUser oder authUser mache, keine Rückgabe erhalte?
 
Ich musste zwangsläufig 8 Monate mit Typo3 arbeiten. Es ist meinen Augen eins der schlechtesten CMS-Tools die es auf dem Markt gibt. Keine Ahnung warum das so populär ist.

Woran ich mich aber noch erinnern kann ist, dass Typo3 seit ExtBase eigene Utility-Klassen fürs Debugging mit bringt, die dir dann deine Ausgabe rendern.

https://www.typo3.net/forum/thematik/zeige/thema/125747/
 
cppnap schrieb:
Ich musste zwangsläufig 8 Monate mit Typo3 arbeiten. Es ist meinen Augen eins der schlechtesten CMS-Tools die es auf dem Markt gibt. Keine Ahnung warum das so populär ist.
Ich stehe relativ am Anfang, ca. 7 Monate und habe mit TYPO3 sehr zu kämpfen, dass mir anfängt die Freude am Programmieren zu nehmen. Daher fühle ich genau das Gleiche wie du.

cppnap schrieb:
Woran ich mich aber noch erinnern kann ist, dass Typo3 seit ExtBase eigene Utility-Klassen fürs Debugging mit bringt, die dir dann deine Ausgabe rendern.

https://www.typo3.net/forum/thematik/zeige/thema/125747/
Es geht nicht um das Debugen an sich. Sondern ich komme nicht mal in die Funktionen der Klasse hinein, obwohl alle Tutorials und andere Extension so aufgebaut sind. Ich vermute daher, dass ich grundlegend diese Sache nicht verstehe und kein Weg finde, es zu verstehen.
 
Für statische Content-Verwaltung kann ich den Nutzen von Typo3 schon verstehen. Es ist einfach für Plugin-Entwickler dieses gesamte Extbase-Fluid-System richtig richtig schlecht konzipiert. Die Dokumentation ist der absolute Horror, es gibt fast nirgens saubere und detaillierte Beispiel-Implementierungen.

Ich weiß nicht wie es mittlerweile ist, ich hatte damals mit der 6er Version gearbeitet wo Extbase/Fluid noch ganz frisch war. Ich erinner mich noch daran, was das für eine unvorstellbare Raketenwissenschaft war ein simples Ajax-Request zu erstellen und einen RestController anzusteuern im Backend. Das hat mich 2 Tage gekostet was ich mit anderen Systemen in 2 Minuten mache

Zu deinem Problem:

Das verstehe ich nicht so ganz, was du damit genau meinst, dass du nicht in die Funktionen der Klassen hinein kommst. Kannst du die Funktionen anderer Klassen nicht aufrufen oder was? Hast du keine Code-Vervollständigung?
 
Was genau willst du den jetzt machen? Ein eigenes Login mit Auth? Oder das fe_user Modell erweitern?

typo3 war in den früheren versionen nicht soo gut. Die 6er Version hat einen richtigen Schritt gemacht, seit version 7 ist es wunderbar nutzbar. Man muss es halt nur mal versuchen. WP Version 3.6 war auch schrecklich...aber auch drupal v6 war bescheiden. Also es gibt immer sachen zu meckern. Typo3 Version 9.5 ist aber durchaus sehr gut geworden.
Das es besser geht steht außer Frage aber auch bedeutend schlechter ;-)
 
cppnap, das mit 2 Tagen brauchen, was eigentlich nur wenige Minuten dauert, ist fast mein wöchentlicher begleiter. Eine sehr frustrierende Situation, die ich bei keinem anderem CMS erlebt habe. Aber am Ende liegt es an mir.

Ja, ich mache in alle Funktionen ein die(); hinein, oder auch am Datei anfang. Aber es bricht nichts ab - es ist wie, als würde die Datei gar nicht laden. Kann das ggf. am composer liegen, dass ein autoload stattfinden muss?

Ciraxis, ein Login mit dem Auth-Service von TYPO3. Quasi von einer fremden Datenquelle Nutzerdaten mit dem TYPO3-fe_users abgleichen.
 
  • Gefällt mir
Reaktionen: cppnap
So war mein Chef auch drauf. Ich war dann der Arsch und kannte mich nicht aus :-D
Das Geilste war, dass ich einen üblen Bug drin gehabt an dem ich natürlich Schuld gewesen bin, da sind beim paginaten von Artikeln nicht alle Artikel aufgetaucht und ich dachte so WHAT? Dann hab ich den Debugger angeschmissen und festgestellt, dass einzelne Zeilen aus der DB einfach NULL im Array waren. Das hat 0 Sinn ergeben.

Kann ja mal passieren, kein System ist perfekt.

Ich hab den selben Query ersetzt mit raw SQL und es sofort perfekt funktioniert. Dann hab ich den Bug meinem Chef gezeigt und dem das Problem erklärt. Denkst du der hat seine Ansicht geändert? Ich war trotzdem Schuld :-D

versuch doch einfach mal in einer Controller-Methode bei der du dir 100% sicher bist, dass Sie getriggered wird statt

Code:
var_dump($var);

das hier:

Code:
\TYPO3\CMS\Core\Utility\DebugUtility::var_dump($var);

eigentlich müsste er dir dann im Frontend was anzeigen, was in der Variable drin steht oder zumindest null, falls Sie nicht befüllt wurde.

Und check im Backend vom Admin bzw. in allen Configs (google danach) dass du wirklich Error-Handling aktiv hast.

Ach ja und vergiss nicht 20 mal den Cache zu clearen nach jeder Änderung :-D
Apropos Cache, ich kann dir nur empfehlen ständig mit SSH in dem Verzeichnis von tmp dich einzunisten und das Ding direkt mit 1 Tastenbefehl zu löschen. Schneller als im Backend per Hand immer auf die Knöpfe zu drücken :-)
 
  • Gefällt mir
Reaktionen: Schumiel
Ich vermute, dass das immer noch am composer oder fehlendem autoload liegt. Da andere Klassen aus dem Repository auch nicht gefunden werden. Daher werde ich externe Anwendung, die mir die Daten übermittelt und über eine eigene Anwendung läuft in den composer setzen. Da ich nicht unmittelbar daran etwas machen kann (Berechtigungen), muss das auf Dritte warten.

Ich danke dir sehr für das andere Thema um TYPO3. Es tut unglaublich gut, wenn man merkt, dass man mit den Anfangsproblemen nicht allein ist. Ich mache mich da schon etwas fertig. U.a. mit dem Cache hatte ich schon paar mal Probleme, wo man diesen zu löschen, viel eher tun hätte müssen. Warum überhaupt etwas gecacht wird, trotz no_cache=1 verstehe ich allerdings nicht. Eine Möglichkeit einer kompletten Deaktivierung des Caches habe ich nicht gefunden.
 
Da kann ich jetzt leider keine Auskunft geben, da PHP nicht wirklich mein Hauptgebiet ist. Dann muss bei dir aber irgendetwas ganz fatales nicht funktionieren, falls du wirklich denkst, dass der Composer irgendwelche dependencies nicht injection kann die quasi ja noch von Typo3 selbst zur Verfügung gestellt werden und noch nicht mal 3rd Party ist.

Mach doch mal folgendes, installier bei dir mal lokal eine völlig unabhängige Typo3-Instanz und geh dort dein Problem noch mal an in einem ganz simpel, erstelltem Plugin an. Mit welcher IDE arbeitest du?

Ach du das geht noch weiter, ich könnte da stundenlang dir Stories erzählen was ich da durch gemacht habe. Ich finde auch solche sinnlosen Eigenentwicklungen wie diese Fluid-Template-Engine horror. Da waren damals auch unglaubliche Bugs drin beim simplen Ausrendern von Listen. Kein Plan wie die überhaupt auf solche verrückten Ideen kommen ihren eigenen HTML-Renderer zu schreiben. Es gibt so viele Alternativen wie Smarty die einfach besser sein.

Die beste Lösung für mich damals war immer wieder tmp-folder löschen über shell.
 
Ja, TYPO3 im composer-mode übernimmt der composer das autoload. Da meine Extension nicht im composer ist, müsste ich das extra mitgeben.

Nutze die IDE "phpstorm".

Alles schlecht ist an TYPO3 nicht. Sicherlich hadert man am Anfang viel auch, weil man noch nicht alles kennt. Aber die vielen verschiedenen Programmiersprachen machen es einen nicht einfach. Man schlägt sich halt irgendwie durch. Positiv ist auch, die extrem steile Lernkurve. Ich hoffe einfach in ein paar Monaten meine Frustration verringern zu können.
 
Hmmm okay ich verstehe das Problem - hatte ich aber zu der Zeit nie gehabt.

Ja PHPStorm ist da wirklich nicht schlecht, hatte ich auch benutzt.

Nein wie schon gesagt so für Moderatoren, Journalisten etc die ihre Webseite regelmäßig pflegen wollen ist das an sich gar nicht schlecht. Es geht mir bei Typo3 ausschließlich um die Plugin-Entwicklung die ist für mich der Horror :D

Wie lang musst du denn da "durch"?
 
Für die lokale Entwicklung ist gerade https://github.com/drud/ddev ziemlich genial. Funktioniert auch mit typo3 oder anderen php Projekten. Aber unter windows geht glaub ich noch kein apache. Aber nginx ;-)

Smarty war aber auch sehr schrecklich. Fluid war anfangs bescheiden aber wie gesagt es wurde besser und natürlich fehlen noch ein paar Sachen im core aber dafür gibt es extensions, wie bei jedem anderen cms.

Bezüglich Problem:
Du willst eine andere Quelle für den Frontend Login nutzen? Aber damit das funktioniert benötigst du auf jeden Fall "fe_user" Datensätze. Wie die aussehen oder gemappt sind (ldap, oauth, eigens etc.) ist dir überlassen.

Und ja fe_login im core ist veraltet und nicht auf den neusten Stand. Aber er tut noch was er soll ;-)

https://typo3.org/community/teams/typo3-development/initiatives/ man kann hier auch eine eigene starten bzw. schauen ob was in Planung ist.
 
Auch nach dem composer passiert mit dem Service nichts.

Hier mein Code:

ext_localconf.php:
PHP:
// auth service
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addService(
    $_EXTKEY,
    'auth' /* sv type */,
    'AuthService' /* sv key */,
    'TEST\Test\Service\AuthService',
    array(
        'title' => 'User authentication service',
        'description' => '',

        'subtype' => 'getUserFE, authUserFE',

        'available' => true,
        'priority' => 100,
        'quality' => 100,

        'os' => '',
        'exec' => '',

        'className' => 'TEST\Test\Service\AuthService',
    )
);

Classes/Service/AuthService.php
PHP:
namespace TEST\Test\Service;

use TYPO3\CMS\Core\Utility\GeneralUtility;
die("all");
/**
* Class AuthService
*/

class AuthService extends \TYPO3\CMS\Sv\AuthenticationService
{

    /**
     * Default constructor
     */
    public function __construct()
    {
        die("construct");
    }

    public function getUser(){
        die("getUser");
    }

    public function authUser($user)
    {
        die("authUser");
    }

}

Nicht ein "die" wird angesprochen. Ich verstehe es einfach nicht? Andere Extensions machen doch auch nichts anderes. :-(
 
Zuletzt bearbeitet:
Für alle, die auch mal den Fehler haben.

Als GET-Parameter muss "logintype=login" mitgegeben werden. Dann springt er da rein.
 
Zurück
Oben