Contao-Camp 2024
Ergebnis 1 bis 5 von 5

Thema: Mitglieder login ohne username nur mit Passwort

  1. #1
    Contao-Nutzer
    Registriert seit
    07.01.2013.
    Beiträge
    7

    Standard Mitglieder login ohne username nur mit Passwort

    Hallo liebe Contao Community,

    ich habe bereits viel recherchiert und bis auf einige Lösungsansätze aus 2010 bin ich auf nichts Zielführendes gestoßen.

    Die Aufgabenstellung:

    Kunden die eine Mail (nicht aus Contao) mit einem Zugangscode erhalten, soll es möglich sein, sich auf einer Landingpage durch Eingabe dieses Zugangscodes (Login Feld) auf ein Formular zu gelangen. Es soll hierbei kein Username oder E-Mail-Adresse abgefragt bzw. angezeigt werden. Die Landingpage funktioniert bereits mehrsprachig. Der Login mit username und PW funktioniert und die Weiterleitung zu dem Formular funktioniert ebenfalls. Eine Mitgliedergruppe für dieses Vorhaben ist bereits angelegt.

    Schwierigkeit: Es gibt einen weiteren Mitgliederlogin auf der Seite der durch Änderungen am "mod_login_1cl" nicht beeinträchtigt werden soll. (Hier ist Username und PW gewünscht)

    System: Contao 3.5.18


    Die Lösungsansätze:
    1)

    https://community.contao.org/de/show...Benutzernamens

    Zitat von Balduin:
    Mein Gedanke war einen Benutzer anzulegen dessen Benutzername im Formularfeld schon vorausgefüllt ist, und dann das ganze Formularfeld "Benutzername" einfach über display:none auszublenden.
    War ein guter Gedanke, so hats funktioniert. Ich habe ein Template für das Login-Formular angelegt und darin für das erste Feld als Value den Benutzernamen angegeben und dann das ganze einfach ausgeblendet.

    Gibt nur ein Problem: Für das Login-Formular kann man nur ein einziges Template anlegen. Das ist dann doof, wenn man auf der selben Website noch ein anderes Login-Formular MIT Benutzernamen anlegen möchte. Dafür habe ich hier noch eine ganz interessante Lösung gefunden:
    http://www.contao.org/board/topic/10549.html#new-name

    Ist allerdings auch eine etwas umständliche Methode. Bleibt also nur zu hoffen, daß man in Zukunft vielleicht auch mal mehrere Templates für ein Login-Formular anlegen kann.


    2)

    https://community.contao.org/de/show...login+username

    Zitat Zitat von Samuell Beitrag anzeigen
    Hallo liebe Community,
    heute kam genau das Thema "Login im FE nur mit Mitgliedername" auch bei mir auf und @xtra war so freundlich ein kleines Script dafür zu basteln, dass die ursprüngliche Idee sogar noch erweitert.

    Hinweis:
    Dieses Vorgehen ist logischerweise nicht so sicher wie der reguläre Login via Passwort und Benutzername.
    Überlegt euch sehr, sehr gut ob und wo Ihr diese Methode anwendet.


    In meinem Fall geht es nur um ein paar ergänzende Seminarunterlagen, die nicht ganz frei zugänglich sein sollen, weshalb ich keine Bedenken bzgl. der Sicherheit haben muss.

    Einrichtung
    Legt eine Mitgliedergruppe (zB "Direktlogin") an, in der die Mitglieder sich ohne Passwort einloggen dürfen und merkt euch dessen Gruppen-ID, die beim "hover" über den blauen Kreis ganz rechts in der Gruppenliste zu sehen ist.
    Öffnet die Datei

    PHP-Code:
    system/config/initconfig.php 
    und tragt dort folgenden Code ein:

    PHP-Code:
    <?php

    $GLOBALS
    ['TL_HOOKS']['checkCredentials'][] = array('MyClass''myCheckCredentials');

    if (\
    Input::post('username') && !\Input::post('password')) {
        \
    Input::setPost('password''dontcare');
    }

    class 
    MyClass
    {
        public function 
    myCheckCredentials($username$password, \User $user)
        {
            
    // 42 == member group id of autologin members.
            
    if (($user instanceof \FrontendUser) && $user->isMemberOf(42)) {
                return 
    true;
            }
        }
    }
    Tauscht die "42" durch die ID eurer Mitgliedergruppe aus

    Funktion
    Ist das Mitglied nicht in der Gruppe "Direktlogin" und versucht sich anzumelden, greift der normale Anmeldemechanismus.
    Befindet sich das Mitglied jedoch in der Gruppe "Direktlogin", so kann es sich mit und ohne Angabe des Passwortes nur mit seinem Benutzernamen anmelden.

    In meinem Fall wird der Benutzername eine Kursnr. sein, ist also nicht für jeden sofort zu erreaten.

    Jedoch sei auch an dieser Stelle nochmal explizit darauf hingewiesen:

    Diese ist logischerweise nicht so sicher wie der reguläre Login via Passwort und Benutzername. Wendet Sie nicht an wenn Ihr Daten habt, die Ihr wirklich schützen wollt oder müsst. Überlegt euch vor dem Einsatz gut, ob es nicht auch anders geht.


    Vielen Dank an dieser Stelle nochmal an @xtra für das Bereitstellen dieser Lösung!




    Frage:
    >Ist das mittlerweile möglich bzw. wie ist das zu realisieren?
    >Gibt es eine Erweiterung?
    >Sowas sollte doch bei Gewinnspielen oder ähnlich schon öfters gebraucht worden sein - oder denke ich in eine falsche Richtung?

    Viele Grüße
    Jan

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Ein Grundgerüst für eine Login nur mit einem Zugangscode (Token) habe ich schon mal gebaut: https://github.com/fiedsch/tokenlogin-bundle Vielleicht hilft Dir das ja weiter. Du müsstest halt noch an Deinen Bedarf anpassen. Ich hoffe, ich habe es in der Doku des Bundles einigermaßen beschrieben. Ansonsten frag gerne hier noch mal nach.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Nutzer
    Registriert seit
    07.01.2013.
    Beiträge
    7

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Ein Grundgerüst für eine Login nur mit einem Zugangscode (Token) habe ich schon mal gebaut: https://github.com/fiedsch/tokenlogin-bundle Vielleicht hilft Dir das ja weiter. Du müsstest halt noch an Deinen Bedarf anpassen. Ich hoffe, ich habe es in der Doku des Bundles einigermaßen beschrieben. Ansonsten frag gerne hier noch mal nach.
    Hey Danke fiedsch!

    leider verstehe ich (fast nur Bahnhof bei der Beschreibung:


    What it is
    A module to allow Login with a token alone (as opposed to username+password). >check

    To achieve this we do the following: username and token are semantically swapped as
    we can not have one username having multiple passwords. >check
    but we can have different user names always having the same password! The token which technically is the username will serve as the password. >check

    How it works -- changes to the regular login process

    Extend the regular login module (ModuleTokenlogin extends \Contao\ModuleLogin) >>mittlerweile wahrscheinlich system/modules/core/mudules/ModuleLogin.php

    Provide a special login form that takes care of the changes. This form will not have a password field. >>wie soll ich das erstellen? mit dem Formulargenerator in Contao?

    Set the (POST-)value for password so the regular login module will be happy. >> verstehe ich nicht

    (You) register a method for the importUser hook that creates a new member. See below for an example. >> verstehe ich nicht


    What you have to provide

    You have to implement the Hook importUser and create a new Member there. >>wo soll man den Hook importUser einfügen? Wie geht das?

    You have to have a list of valid tokens somewhere to decide if a login attempt should be considered valid. >>geht auch nur ein Token btw code für alle potentiellen Kunden?



    Ich bin mir bewusst dass meine Wissenslücken noch relativ groß sind aber ich hoffe du kannst mir da etwas auf die Sprünge helfen. Funktioniert dann mit dieser Methode auch noch das "normale Login Formular" auf der Seite wie gewohnt mit username und PW?

    Danke Jan

  4. #4
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Hallo Jan,
    Ich versuche morgen mal, ein paar Punkte zu Deinen Fragen zusammen zu schreiben.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  5. #5
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Zitat Zitat von randycastillo Beitrag anzeigen
    Extend the regular login module (ModuleTokenlogin extends \Contao\ModuleLogin) >>mittlerweile wahrscheinlich system/modules/core/mudules/ModuleLogin.php
    Nein, schon \Contao\ModuleLogin. Das ist der Namespace, nicht der Pfad zur Datei. Allerdings lässt mich Deine Angabe auf Contao 3 schließen -- ich bin von Contao 4.x ausgegangen. Für Contao 3 wärst Du hier richtig: https://github.com/fiedsch/contao-tokenlogin.

    [QOUTE]
    Provide a special login form that takes care of the changes. This form will not have a password field. >>wie soll ich das erstellen? mit dem Formulargenerator in Contao?
    [/QOUTE]

    Hier solltest Du gar nichts machen müssen. Du verwendest dieses neue Modul anstelle des Logon-Moduls von Contao und bndest es irgendwo ein.

    Set the (POST-)value for password so the regular login module will be happy. >> verstehe ich nicht
    AucH hier musst Du nichts machen. Das sollte nur eine Beschreibeung dessen sein, was das Modul (hinter den Kulissen) macht.

    (You) register a method for the importUser hook that creates a new member. See below for an example. >> verstehe ich nicht
    Das ist das Gleiche, wie der nächste Punkt.

    [QUOTE]
    What you have to provide

    You have to implement the Hook importUser and create a new Member there. >>wo soll man den Hook importUser einfügen? Wie geht das?

    You have to have a list of valid tokens somewhere to decide if a login attempt should be considered valid. >>geht auch nur ein Token btw code für alle potentiellen Kunden?
    [QUOTE]

    Das geht mit beliebig vielen verscheidenen Token. Genau dafür musst Du ja eine Methode bereitstellen (der Hook), die entscheidet, ob das angegebene Token gültig ist. Z.B. indem es in einer Datenbanktabelle nachschaut, ob es dort eingetragen ist. Im Prinzip so, wie bei einem Passwort.

    Das mit dem Hook geht so, wie Hooks bei Contao generell gehen und entspricht dem Code, den ich unter "An Example:" angegeben habe.

    Ich bin mir bewusst dass meine Wissenslücken noch relativ groß sind aber ich hoffe du kannst mir da etwas auf die Sprünge helfen. Funktioniert dann mit dieser Methode auch noch das "normale Login Formular" auf der Seite wie gewohnt mit username und PW?
    Warscheinlich ist das Module oder das Bundle dann nichts für Dich, denn es ist eher die Beispiel, wie man so eine Aufgabenstelung umsetzen kann als ein fertiges Modul, das man nur installieren müsste und sofort loslegen kann.

    Das Login Modul von Contao funktioniert parallel zu diesem Modul natürlich weiterhin (wahrscheinlich nur nicht, wenn sie auf der gleichen Seite eingebunden sind).
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •