Verschiedene UserAuthentication per Eventlistener

  • Affected Version
    WoltLab Suite 5.3

    Guten Morgen


    Ich weiss nicht genau ob dies ein Fehler ist, ob ich etwas übersehen habe beim testen oder ob es ansonsten ggf als Feature Request verwendet werden könnte.


    Ich wollte mittels EventListener eine neue UserAuthentication einrichten. Hier mal eine vereinfachte Variante:


    XML: eventListener.xml
            <eventlistener name="userAuthentication">
                <eventclassname>wcf\system\user\authentication\UserAuthenticationFactory</eventclassname>
                <eventname>init</eventname>
                <listenerclassname>wcf\system\event\listener\UserAuthenticationFirstTestListener</listenerclassname>
            </eventlistener>

    Im Eventlistener überschriebe ich dann die $eventObj->className mit der neuen Methode.

    PHP
    class FirstTestUserAuthentication extends DefaultUserAuthentication {
        /**
         * @inheritDoc
         */
        protected function getUserByLogin($login) {
            return $this->getUserByFirstField($login);
        }

    Wie bei der EmailUserAuthentication frage ich dann den User ab einfach nach einer anderen Spalte in der Tabelle. Dies klappt auch soweit. Sobald ich nun aber einen weiteren EventListener machen würde mit einer weiteren UserAuthentifizierung wird nur immer meine erste Abgefragt. Ein wcfDebug im zweiten Eventlistener zeigt mir das er diesen durchläuft. Die zweite UserAuthentication Datei ignoriert er aber komplett.


    Muss ich den EventListener wo anders setzen, oder ist es hier allgemein nicht vorgesehen mehrere Authentifizierungen einzubinden?

    • Official Post

    Hallo,

    Im Eventlistener überschriebe ich dann die $eventObj->className mit der neuen Methode.

    Wenn du den Wert überschreibst, dann ist der alte Wert natürlich weg. Entsprechend ist das Verhalten an der Stelle völlig logisch.

    Muss ich den EventListener wo anders setzen, oder ist es hier allgemein nicht vorgesehen mehrere Authentifizierungen einzubinden?

    Die ganze Logik an der Stelle ist extrem alt. Nach den Session-Änderungen in WoltLab Suite 5.4 hatte ich geplant, für WoltLab Suite 5.5 noch einmal den restlichen dazugehörigen Code näher anzusehen und weiter aufzuräumen.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!