ユーザー名ではなくメールでログイン


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.