ব্যবহারকারীর নাম পরিবর্তে ইমেল দ্বারা লগইন করুন


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

আমার একটি নির্দিষ্ট পরিস্থিতি হয়েছিল যখন আমাকে প্রচুর ব্যবহারকারী "পুরানো" প্রমাণীকরণ কাজ করে রেখে কর্মক্ষম সাইটে ইমেল-ভিত্তিক প্রমাণীকরণ যুক্ত করতে হয়েছিল এবং আমি এটি এমনভাবে করেছি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.