เข้าสู่ระบบด้วยอีเมลแทนชื่อผู้ใช้


12

ฉันไม่พบว่าเป็นไปได้หรือไม่ที่จะเปลี่ยนระบบเข้าสู่ระบบโดยใช้คู่ (อีเมล, รหัสผ่าน) แทน (ชื่อผู้ใช้และรหัสผ่าน)

ฉันคิดว่าคนไม่เคยจำชื่อผู้ใช้ของพวกเขาเมื่อไม่สามารถใช้ได้ตามที่พวกเขาต้องการและดังนั้นจึงต้องเพิ่มหมายเลขในตอนท้าย ...

คำตอบ:


19

ทั้งโมดูลล็อกอิน TobogganและEmailอนุญาตให้ผู้ใช้ของคุณใช้อีเมลเมื่อเข้าสู่ระบบ


โปรดทราบว่า LoginToboggan มีวิธีการอนุมัติผู้ดูแลระบบที่แตกต่างกัน (ไม่ต้องบอกว่ามีปัญหา ): drupal.org/node/1069414
cptstarling

0

นักพัฒนาได้ย้ายโมดูลที่ตรงกับความต้องการของคุณจากแซนด์บ็อกซ์ไปยังหน้าโครงการ: https://www.drupal.org/project/login_email

โมดูลมีอยู่เป็น 7.x-1.x-dev ใช้งานได้ตามที่เป็น ... ดูเหมือนความช่วยเหลือเล็กน้อยสามารถเปลี่ยนเป็นรุ่นที่เป็นทางการได้


0

ในการอนุญาตทั้งชื่อผู้ใช้และอีเมลให้เพิ่มตัวตรวจสอบความถูกต้องก่อน

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

จากนั้นตรวจสอบว่าดูเหมือนที่อยู่อีเมล (มี @, ตัวอักษรก่อนและหลัง @ และอย่างน้อย 1 '.' หลัง @) ถ้าใช่ให้แทนที่อีเมลด้วยชื่อผู้ใช้:

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

ฉันมีสถานการณ์ที่เฉพาะเจาะจงเมื่อฉันต้องเพิ่มการรับรองความถูกต้องทางอีเมลในไซต์งานที่มีผู้ใช้จำนวนมากทำให้การตรวจสอบสิทธิ์แบบ "เก่า" ใช้งานได้และฉันก็ทำเช่นนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.