Benutzername ist Emailadresse

  • Joomla Version
    4.3.2
    PHP Version
    PHP 8.1.x
    Hoster
    hosteurope
    Link (URL) zur Seite mit dem Problem
    https://www.give-consulting.com/_neu3/index.php/en/rs-forms-en

    Hallo,

    braucht man eine Extension, um die Emailadresse des Users bei der Anmeldung als Benutzernamen zu verwenden?

    Welche wäre da zu empfehlen?

    Danke für einen Tipp.

  • Ideal wäre ein Authentication Plugin auf Basis des Joomla-Plugin, welches statt des Benutzernamen die E-Mail Adresse abfragt. Ich weiß nicht ob das schon jemand erstellt hat. Ich wollte es für meine Vereinsseite ansonsten auch noch machen. Schon mal bei den Extensions geschaut?

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • Ich weiß nicht ob das schon jemand erstellt hat. Ich wollte es für meine Vereinsseite ansonsten auch noch machen.

    weiß ich nicht. Noch nie probiert.

    Hier geht's zwar wegen dem Mail, aber dürfte ausprobiert worden sein:


    Liebe Grüße

    Christine

  • Im Prinzip ist es mit Joomla! 4 relativ einfach, wenn du als Aufgabe hast, den Benutzername komplett nicht mehr zu verwenden sondern rein auf die Email zu gehen:


    - Override von Language Strings (Username => Email)

    - Override von Registrierung (Username rausnehmen)

    - kleines Plugin was u.a. folgendes macht:


    Das wars schon.

  • Ich habe mein Plugin auch fertig, welches auf das Joomla Standard Plugin basiert.


    Im Endeffekt wird die Abfrage erweitert, so dass der User sich entweder mit seinem Benutzernamen oder E-Mail Adresse anmelden kann.


    PHP
    $query = $db->getQuery(true)
    ->select($db->quoteName(['id', 'password','username']))
    ->from($db->quoteName('#__users'))
    ->where($db->quoteName('username') . ' = :username', 'OR')
    ->where($db->quoteName('email') . ' = :email')
    ->bind(':username', $credentials['username'])
    ->bind(':email', $credentials['username']);


    Etwas tiefer muss noch zusätzlich angegeben werden:

    PHP
    $response->username = $result->username;
    $credentials['username'] = $result->username;

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.