Event in wcf\form\LoginForm::__run

  • App
    WoltLab Suite Core

    Ich nutze die Login-Seite des WSC für meine eigene Anwendung. Mit einem EL konnte ich bereits die URL ändern, auf die nach erfolgreichem Login weitergeleitet wird.

    Leider erhält man eine PermissionDeniedException, wenn man LoginForm im eingeloggten Zustand aufruft. Stattdessen würde ich gerne den Nutzer auf eine bestimmte Seite meiner Anwendung weiterleiten.

    Das funktioniert aber nicht, da es in AbstractPage::__run kein Event gibt. Möglicherweise ist das so gewollt. Falls ja, würde ich mir ein extra Event in wcf\form\LoginForm::__run wünschen, damit ich die Weiterleitung realisieren kann:

    PHP
        public function __run() {
            EventHandler::getInstance()->fireAction($this, '__run');
            
            parent::__run();
        }
  • Christopher Walz March 4, 2018 at 2:40 PM

    Changed the title of the thread from “Event in LoginForm::__run” to “Event in wcf\form\LoginForm::__run”.
  • was du überlegen könntest, wäre einen decorator für die Login-Page zu schreiben, und dann zu schauen, ob du im request-handler irgendwo den Controller von originalen Login-Page auf deinen decorator (der eine andere Methode hat) ändern kannst.

    Ich hab aber noch nicht geschaut, obs zur Runtime events gibt, um da entsprechend die Controller zu tauschen. Wäre aber das, was ich als erstes mal in betracht ziehen würde.

    "A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP" — Leonard Nimoy

  • Hm, dann setze ich das Event lieber eben selber und warte bis es implementiert wird. Ist ja glücklicherweise eine private Anwendung, da sind die Probleme beim Update zu vernachlässigen. :)

    In dem Falle kannst du auch Runkit installieren und zur Laufzeit Methoden ersetzen ;) (runkit_method_redefine)

    Alternativ Fällt mir gerade noch ein, dass du einen eignen Autoloader vor den WCf autoloader schieben kannst und deine eigene Implementation der Login-Klasse laden kannst.

    "A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP" — Leonard Nimoy

  • Ich frage mich eher warum die Abfrage der UserID unbedingt in __run() stattfinden muss :/?

    Würde es als erstes im readParameters() (nach dem parent call) stattfinden, wären kaum mehr Zeilen Code ausgeführt und man kann das readParameters() event nutzen.

  • Wäre cool wenn sich WoltLab dazu äußern würde. Wie gesagt sehe ich weder den Grund dies in der __run() durchzuführen, wenn readParameters() genauso gut wäre noch (oder gerade deswegen) es ein neues event geben muss. Diese Eigenart wird scheinbar nur in der einen Klasse verwendet...

  • Mit 3.1.3 wird die Prüfung des Login-Status in readParameters() verschoben, dadurch kann es per Event-Listener beeinflusst werden: https://github.com/WoltLab/WCF/co…6205f5f8ff5d506

    ---

    Interne Notiz für 3.2: Statt einer generischen PermissionDeniedException sollte stets ein Redirect erfolgen, entweder zur Startseite des jeweiligen Environments oder zum $url-Parameter, abhängig davon was zutreffend ist.

    Alexander Ebert
    Senior Developer WoltLab® GmbH

  • Nabend,

    also, dass:

    Leider erhält man eine PermissionDeniedException, wenn man LoginForm im eingeloggten Zustand aufruft.

    haben wir jetzt auch!

    DAS:

    Mit 3.1.3 wird die Prüfung des Login-Status in readParameters() verschoben,

    ....ist ja bereits umgesetzt!

    Aber damit kann ich jetzt nichts anfangen:

    Quote from Alexander Ebert

    dadurch kann es per Event-Listener beeinflusst werden: https://github.com/WoltLab/WCF/co…6205f5f8ff5d506

    Das Forum ist auf der aktuellsten Version 3.1.3pl1 und der obige Code wurde in dieser Version bereits eingetragen!

    WAS kann ich jetzt als Boardbetreiber machen?

    Andreas

    Display Spoiler

    “Paisley Park is pretty much representative of everything I am musically”. - Prince

    The Orange Park

    Edited once, last by Bellerophon (June 23, 2018 at 9:45 PM).

  • Hallo,

    Quote


    WAS kann ich jetzt als Boardbetreiber machen?

    Die Frage stellt sich mir auch.

    Ich brauche eine Seite (Home) die für Gäste sichtbar ist. Diese Seite hat keine Boxen.

    Nach dem Login aber brauch ich einfach eine andere Seite als "Home", ein Usercenter, mit Boxen.

    Ich bin mir sicher, tausende von Seitenbetreiber suchen hier eine Lösung.

    Kann sein, ich übersehe etwas, aber mit den Boxen ist das nicht wirklich realisierbar.

    Es wäre wunderbar, wenn hier eine Lösung gepostet werden würde, die auch Menschen verstehen, die das CMS nicht entwickelt haben ...


    Gruß

  • Ich brauche eine Seite (Home) die für Gäste sichtbar ist. Diese Seite hat keine Boxen.

    Nach dem Login aber brauch ich einfach eine andere Seite als "Home", ein Usercenter, mit Boxen.

    Das sollte doch umzusetzen sein, indem man die Seite für das Usercenter mit allen Boxen erstellt und die Boxen nur registrierten Mitgliedern anzeigen lässt. Dann würden Gäste nur eine leere Seite sehen und eingeloggte User eben das Usercenter.

    Edit:

    Boxen bearbeiten -> Zugangsbeschränkung ->

    Inhalt ist für alle Benutzer sichtbar -> Nein

    Und dann die Gruppen angeben (z.B. Registrierte Benutzer), die die Boxen sehen dürfen.

  • Hallo,

    leider nein, aus verschiedenen Gründen:

    Es gibt Boxen, die wir auch den Gästen auf Unterseiten anbieten wollen.

    Sind die Boxen für Gäste Sichtbar, wird meine Homeseite zweispaltig ...

    Es ist im Moment so einfach nicht realisierbar, weil ich dann alle Boxen vom Usercenter für Gäste sperren müsste ...

    Dann gibt es noch Boxen von Drittanbieter, die das so gar nicht unterstützen.

    Ich brauche eine Homeseite für Gäste ohne Boxen, das habe ich ja, no Prob.

    Aber der Usercenter klappt nicht, eben deshalb fehlt schlicht eine Lösung, eine weitere Seite nach dem Login den angemeldeten Usern zu geben.

    Userfreundlich wäre, dass der angemeldete User einfach dann in den Usercenter kommt und die Startpage nicht mehr sichtbar ist.

    Ich denke, die Lösung steckt in der LoginForm.class.php, auch wenn nicht update-fähig, habe es gerade noch in einem anderen Thema gepostet, dass die Lösung angebracht wäre, und nicht nur die Antwort "Zeile 55" ... ;)

    Gruß

  • Tim Düsterhus August 23, 2018 at 3:56 PM

    Set the Label from Planned to Implemented

Participate now!

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