Login melalui email bukan nama pengguna


12

Saya tidak dapat menemukan apakah mungkin atau tidak mengubah sistem login dengan menggunakan pasangan (email, kata sandi), bukan (nama pengguna, kata sandi).

Saya pikir orang tidak pernah mengingat nama pengguna mereka ketika tidak tersedia seperti yang mereka inginkan dan harus menambahkan nomor di akhir ...

Jawaban:



0

Pengembang telah memindahkan modul yang memenuhi kebutuhan Anda dari kotak pasir ke halaman proyek: https://www.drupal.org/project/login_email

Modul ini ada sebagai 7.x-1.x-dev Ini berfungsi seperti ... sepertinya sedikit bantuan dapat mengubahnya menjadi rilis resmi.


0

Untuk mengizinkan nama pengguna dan email: tambahkan validator terlebih dahulu

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

kemudian periksa apakah terlihat seperti alamat email (berisi @, huruf sebelum dan sesudah @ dan setidaknya 1 '.' setelah @). Jika ya, ganti email dengan nama pengguna:

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

Saya memiliki situasi khusus ketika saya harus menambahkan otentikasi berbasis email ke situs yang berfungsi dengan banyak pengguna meninggalkan otentikasi "lama" bekerja, dan saya melakukannya sedemikian rupa.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.