Entre por email em vez de nome de usuário


12

Não consigo descobrir se é possível ou não alterar o sistema de logon usando o casal (email, senha) em vez de (nome de usuário, senha).

Acho que as pessoas nunca se lembram de seus nomes de usuário quando não estavam disponíveis como desejavam e, portanto, tiveram que adicionar um número no final ...

Respostas:



0

O desenvolvedor mudou um módulo que atende às suas necessidades da sandbox para a página do projeto: https://www.drupal.org/project/login_email

O módulo existe como 7.x-1.x-dev. Funciona como está ... parece que um pouco de assistência pode transformar isso em um lançamento oficial.


0

Para permitir o nome de usuário e o email: primeiro adicione o validador

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

verifique se parece com o endereço de e-mail (contém @, letras antes e depois de @ e pelo menos 1 '.' depois de @). Se for, substitua o email pelo nome de usuário:

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

Eu tive uma situação específica quando precisei adicionar a autenticação baseada em email ao site de trabalho, com muitos usuários deixando a autenticação "antiga" funcionando, e fiz dessa maneira.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.