Đăng nhập bằng email thay vì tên người dùng


12

Tôi không thể tìm thấy nếu có thể hoặc không thay đổi hệ thống đăng nhập bằng cách sử dụng cặp đôi (email, mật khẩu) thay vì (tên người dùng, mật khẩu).

Tôi nghĩ mọi người không bao giờ nhớ tên người dùng của họ khi không có sẵn như họ muốn và vì vậy phải thêm một số vào cuối ...

Câu trả lời:



0

Nhà phát triển đã chuyển một mô-đun đáp ứng nhu cầu của bạn từ hộp cát sang trang dự án: https://www.drupal.org/project/login_email

Mô-đun tồn tại dưới dạng 7.x-1.x-dev Nó hoạt động như ... có vẻ như một chút trợ giúp có thể biến điều này thành một bản phát hành chính thức.


0

Để cho phép cả tên người dùng và email: trước tiên hãy thêm trình xác nhận

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

sau đó kiểm tra xem có giống địa chỉ email không (chứa @, chữ cái trước và sau @ và ít nhất 1 '.' sau @). Nếu có, thay thế email bằng tên người dùng:

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

Tôi đã có một tình huống cụ thể khi tôi phải thêm xác thực dựa trên email vào trang web đang hoạt động với rất nhiều người dùng để xác thực "cũ" hoạt động và tôi đã làm theo cách đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.