Accedi via e-mail anziché nome utente


12

Non riesco a trovare se è possibile o meno modificare il sistema di accesso utilizzando la coppia (e-mail, password) anziché (nome utente, password).

Penso che le persone non ricordino mai i loro nomi utente quando non sono disponibili come volevano e quindi hanno dovuto aggiungere un numero alla fine ...

Risposte:



0

Lo sviluppatore ha spostato un modulo che soddisfa le tue esigenze dalla sandbox alla pagina del progetto: https://www.drupal.org/project/login_email

Il modulo esiste come 7.x-1.x-dev Funziona così com'è ... sembra che un po 'di assistenza possa trasformarlo in una versione ufficiale.


0

Per consentire sia il nome utente che l'e-mail: per prima cosa aggiungi il validatore

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';
}

quindi controlla se appare come indirizzo email (contiene @, lettere prima e dopo @ e almeno 1 '.' dopo @). In tal caso, sostituisci l'email con il nome utente:

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;
                }
            }
        }
    }
}

Ho avuto una situazione specifica quando ho dovuto aggiungere l'autenticazione basata su e-mail al sito di lavoro con molti utenti che lasciavano la "vecchia" autenticazione funzionante, e l'ho fatto in questo modo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.