사용자 이름 대신 이메일로 로그인


12

(사용자 이름, 비밀번호) 대신 커플 (이메일, 비밀번호)을 사용하여 시스템에서 로그인을 변경할 수 있는지 여부를 찾을 수 없습니다.

나는 사람들이 원하는대로 사용할 수 없을 때 자신의 사용자 이름을 기억하지 못하기 때문에 그 끝에 숫자를 추가해야한다고 생각합니다 ...

답변:



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.