उपयोगकर्ता नाम के बजाय ईमेल द्वारा लॉगिन करें


12

मुझे पता नहीं है कि यह संभव है या नहीं (यूज़रनेम, पासवर्ड) के बजाय युगल (ईमेल, पासवर्ड) का उपयोग करके सिस्टम में लॉग को बदल सकते हैं।

मुझे लगता है कि लोग अपने उपयोगकर्ता नाम को कभी भी याद नहीं करते हैं जब उपलब्ध नहीं था जैसा कि वे चाहते थे और इसलिए इसके अंत में एक नंबर जोड़ना था ...

जवाबों:


19

लॉगिन टोबोगन और ईमेल पंजीकरण मॉड्यूल दोनों आपके उपयोगकर्ताओं को लॉग इन करते समय अपने ईमेल का उपयोग करने की अनुमति देते हैं।


ध्यान रखें कि 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;
                }
            }
        }
    }
}

मेरे पास एक विशिष्ट स्थिति थी जब मुझे "पुराने" प्रमाणीकरण काम करने वाले उपयोगकर्ताओं को छोड़ने के साथ बहुत सारे उपयोगकर्ताओं के साथ काम करने वाली साइट पर ईमेल-आधारित प्रमाणीकरण जोड़ना पड़ा, और मैंने इसे इस तरह से किया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.