Zaloguj się przez e-mail zamiast nazwy użytkownika


12

Nie mogę znaleźć, czy jest możliwa zmiana systemu logowania przy użyciu pary (adres e-mail, hasło) zamiast (nazwa użytkownika, hasło).

Myślę, że ludzie nigdy nie pamiętają swoich nazw użytkowników, gdy nie są dostępne tak, jak chcieli, dlatego musieli dodać numer na końcu ...

Odpowiedzi:



0

Deweloper przeniósł moduł, który spełnia Twoje potrzeby, z piaskownicy na stronę projektu: https://www.drupal.org/project/login_email

Moduł istnieje jako 7.x-1.x-dev Działa tak, jak jest ... wygląda na to, że odrobina pomocy może przekształcić to w oficjalną wersję.


0

Aby zezwolić zarówno na nazwę użytkownika, jak i adres e-mail: najpierw dodaj weryfikator

function YOURMODULE_form_user_login_alter(&$form, &$form_state, $form_id) {
    $form['#validate'][1] = 'YOURMODULE_form_user_login_replace_email_validate';
    $form['#validate'][2] = 'user_login_authenticate_validate';
    $form['#validate'][3] = 'user_login_final_validate';
}

następnie sprawdź, czy wygląda jak adres e-mail (zawiera @, litery przed i po @ oraz co najmniej 1 '.' po @). Jeśli tak, zastąp wiadomość e-mail nazwą użytkownika:

function YOURMODULE_form_user_login_replace_email_validate(&$form, &$form_state) {

    $name = $form_state['values']['name'];
    if (strpos($name, '@')) {
        $mailParts = explode('@', $name);
        if ((int)count($mailParts) === 2) {
            $extParts = explode('.', $mailParts[1]);
            if (count($extParts) > 1) {
                $query = db_select('users', 'u');
                $query->distinct();
                $query->fields('u', ['uid']);
                $query->fields('u', ['name']);
                $query->fields('u', ['mail']);
                $query->condition('u.mail', $name, '=');
                $result = $query->execute()->fetchAllAssoc('name');

                if (!empty($result)) {
                    $name = array_keys($result)[0];
                    $form_state['values']['name'] = $name;
                }
            }
        }
    }
}

Miałem specyficzną sytuację, gdy musiałem dodać uwierzytelnianie oparte na poczcie e-mail do działającej witryny z wieloma użytkownikami, którzy pozostawili „stare” uwierzytelnianie, i zrobiłem to w taki sposób.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.