Benutzer automatisch anmelden?

  • Hallo zusammen,


    ich betreibe eine Intranet-Seite für eine Einrichtung in der u.a. kognitiv eingeschränkte Menschen arbeiten. Der Zugriff ist nur über die Unternehmens-IP möglich. Somit ist die Öffentlichkeit komplett ausgesperrt.


    Ich nutze die VisForms Subscription und stelle damit mehrere Formulare bereit. Die Übermittlungen der Formulare sollen im Frontend (über ein kryptischen Link) bearbeitet werden. Dafür nutze ich die Datenansicht mit Edit-Link.


    In J3 war es möglich, dass man auch im nicht-eingeloggten Zustand Datensätze im Frontend bearbeiten konnte. Leider ist dies mit J4 nicht mehr möglich.


    Ich habe nun einen Benutzer mit der Gruppe "Registriert" angelegt. Damit kann man nun nach Anmeldung Datensätze im Frontend bearbeiten.


    Ich würde es den kognitiv eingeschränkten Menschen gerne ersparen, sich anmelden zu müssen. Es sind verschiedene Formulare die von mehreren Personen bearbeitet werden müssen.


    Meine Frage ist nun: Ist es irgendwie möglich, bei diesen Links den Benutzer automatisch anzumelden?

    Mir ist absolut bewusst, dass dies eine Sicherheitslücke darstellen kann, aber die Öffentlichkeit ist ja durch die IP-Sperre komplett ausgesperrt und diese Intranet-Seite ja ja ein sehr spezieller Anwendungsfall. Bei dem kleinen Benutzerkreis kann ich Missbrauch nahezu ausschließen.


    Über einen Tipp würde ich mich sehr freuen. :)


    Vielen Dank und viele Grüße

  • drmenzelit: Vielen Dank für deine schnelle Antwort!


    [offtopic]Ich konnte im ersten Posts keine Links oder Zitate (FF68) einfügen, das Pop-Up wurde nicht geöffnet. Ich bin jetzt auf Edge umgestiegen, nun sollte es funktionieren[/offtopic]


    Der Support von Vi-Solutions (Hersteller VisForms) ist ja sehr gut. Ich hatte dort schon nachgefragt. Dort wurde gesagt, dass es nicht möglich ist.

    Der Code von J4 erfordert für ein Checkout zum Editieren von Daten eine UserID größer 0, was bei einem unangemeldeten Benutzer nicht der Fall (UserID = 0).

    Daher wollte ich hier mal nachfragen ob man dem Link eine UserId>0 mitgeben kann.


    Vielen Dank und viele Grüße

  • Bitte zukünftig das Crossposting nicht erst am Ende des Threads einfügen sondern sofort wenn die Frage in einem anderen Forum gestellt wurde.


    Siehe auch in den Forenregeln :


    Zitat
    avatar-default.svg Zitat von Das Forenteam

    Für die Fragesteller:

    • Wenn eine Frage in mehreren Foren gestellt wird ist es ein Gebot der Fairness, diese Fragen zu verlinken (Crossposting)


    Eventuell nützlich, hab ich aber mit Joomla4 noch nicht benutzt oder getestet:



    Frontend Login


    Das spezielle Frontend-Loginformular müßte man ja in diesem Fall nicht verstecken und könnte es auch z.B. per Menüeintrag aufrufbar machen.

  • Übrigens wenn du dann auch noch nachfolgende Javascript-Zeilen:


    Code
    <script>
    window.onload = function() {    
    window.document.forms[0].submit();
    };
    </script> 

    nach dem

    ?>

    in Zeile 26 hinzufügst wird auch gleich die Anmeldung ausgeführt wenn das vorausgefüllte spezielle Login-Formular aufgerufen wird, ohne das man dann noch auf einen Button im Formular klicken muß.

  • Hallo Sieger66: Vielen Dank für deine Antwort!


    Ich gebe dir völlig Recht, ich hätte das Crossposting bereits im ersten Beitrag erwähnen sollen, aber wie gesagt, das "Link einfügen Popup" wurde nicht geöffnet, was vermutlich an meinem veralteten Browser lag. Leider hatte ich da keinen Einfluss drauf, da der Browser per Citrix-Virtual-Desktop von unserer IT zur Verfügung gestellt wird. Ab dem zweiten Post bin ich dann auf einen Laptop ausgewichen, der diesen Restriktionen nicht unterliegt.


    Deine Tipps in #5 und #7 werde ich auf jeden Fall ausprobieren. Das kligt sehr vielversprechend und würde den Menschen das Arbeiten ernorm vereinfachen. Ich arbeite auch wie in deinem Beispiel mit Cassiopeia.

    Ich melde mich auf jeden Fall wieder zurück!


    Vielen Dank nochmal und beste Grüße :):thumbup:

  • Sieger66: Ich habe das gerade mit J4 probiert, das funktioniert super! Vielen Dank nochmal!


    Kannst du mir sagen, wie nach dem automatischen Einloggen weitergeleitet wird?


    Die Anmeldungsweiterleitung aus dem Benutzer-Anmeldungs-Modul hilft mir in dem Fall nicht weiter, da ich mehrere Overrides mit verschiedenen Benutzern und jeweils einer verschiedenen Weiterleitung brauche.


    Im Javascript selbst mit window.location = "weiterleitungsseite"; funktioniert es nicht.

    Nach dem Script mit php per <?php header("Location: weiterleitungsseite"); ?> funktioniert es auch nicht.


    Vielen Dank und viele Grüße

  • Hallo zusammen,


    hier noch eine weitergehende Beschreibung:


    Das Override unter /template/TEMPLATENAME/html/com_users/login/testlayout.php sieht nun so aus:

    Wenn ich nur den Code aus Zeile 34 nutze, werde ich zwar auf die dort angegebene Seite weitergeleitet, aber ich werde vorher nicht angemeldet.

    Wenn ich nur den Code aus den Zeilen 39-41 nutze, werde ich zwar angemeldet und dann auf die User-Profil-Seite https://example.org/component/users/profile?Itemid=999 weitergeleitet, aber eben nicht automatisch auf die weiterleitungsseite.php.


    Beides wäre halt schön, erfolgreiche Anmeldung und anschließende Weiterleitung. :)


    Über einen Tipp würde ich mich sehr freuen.


    Vielen Dank und viele Grüße

  • Lass deinen Code in den Zeilen 34 und 39-41 weg.


    Nachfolgenden Code, ist in der Orginal-Core-Datei derzeit in Zeile 109, ist bei dir halt in einer höheren Zeilennummer,

    löschen oder korrekt auskommentieren:


    <?php $return = $this->form->getValue('return', '', $this->params->get('login_redirect_url', $this->params->get('login_redirect_menuitem', ''))); ?>


    an dessen Stelle in dieser Zeile oder in der Zeile darüber folgenden Code entsprechend verwenden:


    <?php $return = 'https://example.com/weiterleitungsseite'; ?>


    Den Dateinamen würde ich aber nicht

    /template/TEMPLATENAME/html/com_users/login/testlayout.php

    sondern wie nachfolgend mit angehängtem _login verwenden.

    /template/TEMPLATENAME/html/com_users/login/testlayout_login.php


    Falls du später einen eigenen Menüeintragstyp daraus machen möchtest,

    mußt du dann z.B. den Dateinamen nicht mehr ändern.

    Oder falls Joomla im Core später mal was ändert könnte es auch einfacher sein...

  • Hallo Sieger66: Nochmals Daneschön für deine Hilfe.


    Leider funktioniert das nicht und ich werde ich nicht weitergeleitet

    Änderungen in Zeile 24 - 26 (Logindaten hinterlegen)


    Änderungen in Zeile 32 - 36 (Anmeldung ausführen) und


    Änderungen in Zeile 120 (Weiterleitungsziel definieren)


    Effekt: Ich werde angemeldet und lande auf der User-Profil-Seite, werde aber nicht auf die in Zeile 120 definierte Seite weitergeleitet.


    Der Seitenaufruf erfolg mit https://example.org/index.php?…n&layout=testlayout_login


    Die Rahmenbedingungen sind übrigens J4.2.4 und PHP 8.0



    Irgendwo klemmt da noch was...

  • Ist https wirklich richtig oder ist es doch http ?

    Die User-Profil-Seite kommt dann wenn das Weiterleitungsziel nicht richtig "funktioniert".

    Versuche mal testweise ein anderes public Weiterleitungsziel auf eurer Website.

    Kannst auch mal die Weiterleitung versuchen im Code in der Zeile 120 mit


    <?php $return = '116'; ?>


    Wobei 116 durch die ID-Nummer des public Menüeintrages ersetzt werden müßte auf den weitergeleitet werden soll.

    Die ID-Nummer siehst du bei den Menüeinträgen in der Spalte ID siehe z.B. auch:


    help.joomla.org/proxy?keyref=Help42:Menus:_Items&lang=de#Bildschirmfoto

  • Hallo Sieger66: Vielen vielen Dank für deine Hilfe!


    Mit <?php $return = '116'; ?> funktioniert es.


    Mit der absoluten URL funktioniert es nun auch, aber mit der Menü-ID ist es ja viel einfacher.

    So muss z.B. nach dem Umzug von Entwickungs-Subdomian auf Echtdomain nichts geändert werden.


    Vielen Dank nochmal für deine Geduld und Hilfe - auch im Namen der zukünftigen Bediener! :):thumbup:


    Viele Grüße

  • Beachten und eventuell testen sollte man das wenn mehrere Personen den selben Loginnamen benutzen das es nicht zu unerwüschten effekten kommt.


    Beispiel: Benutzer 1 und 2 bearbeiten im gleichen Zeitraum den selben Beitrag.


    Benutzer 1 bearbeitet und speichert geänderten Beitrag und Benutzer 2 speichert später andere Änderung und dadurch ist die Änderung von Benutzer 1 nicht mehr vorhanden. Weil Benutzer 2 ebenfalls die alte Beitragversion ausgecheckt und bearbeitet hatte.


    Dieses mögliche Problem müßte dann aber eigentlich auch schon bei euch bei Joomla 3.x vorliegen, zumindest soweit es die Eingaben betrifft wenn ihr euch bisher dort nicht angemeldet habt.



    Es sind daher eventuell mehrere spezielle Loginformulare mit jeweils anderen Benutzernamen im Code darin zu verwenden.


    Kann man dann z.B. auch zu individuellen Weiterleitungszielen nach der Anmeldung nutzen.



    /template/TEMPLATENAME/html/com_users/login/testlayout1_login.php


    /template/TEMPLATENAME/html/com_users/login/testlayout2_login.php



    Könnte man aber auch durch anhängen entsprechender Daten an die aufrufende url und verarbeiten der get-Daten in der bestehenden Datei testlayout_login.php lösen.

  • Wir nutzen mehrere Formulare, deren Übermittlungen (Bestellungen, Arbeitsaufträge usw.) jeweils immer nur ein User bearbeitet. Wenn dieser User nicht im Haus ist (Krank oder Urlaub), gibt es eine benannte Vertretung.


    Nur diese beiden User kennen den kryptischen Link zum Formular. Z.B. https://example.org/qcqeaslsrwv2c47w und haben eine entsprechende Desktopverknüpfung.


    Dieser kryptische Link führt zur Weiterleitungskomponente,

    die dann auf https://example.org/index.php?option=com_users&view=login&layout=testlayout_login weiterleitet.


    Dort erfolgt ja dann die Anmeldung und Weiterleitung auf z.B. https://example.org/qcqeaslsrwv2c47w-login, der eigentlichen Datensatztabelle, die dann letztendlich bearbeitet wird.


    Wir nutzen das System seit 2018, und haben bisher nie Probleme gehabt. Die beiden User wissen, das gleichzeitiges Arbeiten zu unerwünschten Effekten führt.


    Wenn das Formular abgeschickt, bekommen beide User eine Mail, die die Datensatzdetails sowie die erste URL enthält. Das stößt dann den Workflow an.


    Ich würde dann pro Formular einen User und ein entsprechendes Override anlegen.


    In J3 konnte man die Datensatztabelle im Frontend ohne Anmeldung bearbeiten, aber so ist es ja nun auch ohne weiteres Zutun des Users möglich.



    Vielen Dank für die weiterführenden Tipps und viele Grüße!