अपने ईमेल को बदलने के लिए उपयोगकर्ता को कुछ भूमिका से प्रतिबंधित करें


10

क्या कोई तरीका है जिससे मैं उपयोगकर्ताओं को उनके ईमेल पते को बदलने के लिए निश्चित भूमिका से प्रतिबंधित कर सकता हूं। एक बार जब वे पंजीकृत हो जाते हैं तो मुझे उन्हें संपादन सेटिंग पृष्ठ में इसे बदलने में सक्षम होने की आवश्यकता नहीं होती है। मैंने पाया कि उपयोगकर्ता नाम बदलने के लिए कैसे प्रतिबंधित किया जाए लेकिन ईमेल नहीं।

मैं Drupal 7 का उपयोग कर रहा हूँ। उन्नत में धन्यवाद :)

जवाबों:


8

एक अन्य तरीका प्रोग्रामिक रूप से आपके कस्टम मॉड्यूल में है

function mymodule_form_alter(&$form,$form_state,$form_id) {
   global $user;
    if ($form_id == "user_profile_form") {
       if(in_array('your role',$user->roles) && isset($form['account'])) {
           $form['account']['mail']['#disabled']=TRUE;
          }
      }
 }

5

उपयोगकर्ता सुरक्षा मॉड्यूल का उपयोग करें :

यह मॉड्यूल उपयोगकर्ताओं के लिए विभिन्न संपादन सुरक्षा प्रदान करके उपयोगकर्ता प्रशासकों के बारीक उपयोग को नियंत्रित करता है। सुरक्षा किसी उपयोगकर्ता के लिए विशिष्ट हो सकती है, या किसी भूमिका में सभी उपयोगकर्ताओं के लिए लागू की जा सकती है।


मैंने इस मॉड्यूल को डाउनलोड किया था लेकिन यह वह नहीं था जो आवश्यक था - यह किसी उपयोगकर्ता को अपना पासवर्ड बदलने से रोकने में असमर्थ है। बल्कि, यह अन्य उपयोगकर्ता के पासवर्ड को बदलने से व्यवस्थापक भूमिकाओं को रोकता है।
littledynamo

3

zhilevan - मुझे इस समस्या को जल्दी हल करने के लिए शुरू करने के लिए अच्छे कोड के लिए धन्यवाद। मेरे पास एक साइट है जहां एक सामान्य उपयोगकर्ता भूमिका "क्लाइंट" लॉगिन है, ताकि क्लाइंट फ़ाइलों को अपलोड और डाउनलोड कर सकें। उपयोगकर्ता खाते को "एक बंद" अपलोड या डाउनलोड के लिए संभावित रूप से कई ग्राहकों के बीच साझा किया जाएगा और हम उन्हें इस जेनेरिक खाते के लिए उपयोगकर्ता नाम, पासवर्ड या किसी अन्य सामान को बदलना नहीं चाहते हैं। मुझे यकीन है कि ऐसा करने के लिए और अधिक सुरुचिपूर्ण तरीके हैं, लेकिन यहां उपयोगकर्ता भूमिका के आधार पर "एडिट विकल्प को बंद करने" के लिए मेरा कोड है। (मैंने उपयोगकर्ता को मॉड्यूल की रक्षा करने की कोशिश की, लेकिन यह काम करने के लिए नहीं मिल सका)। यहां मेरा कोड किसी और के उपयोगी होने के मामले में है।

function mymodule_form_alter(&$form,$form_state,$form_id) {
   global $user;
    if ($form_id == "user_profile_form") {
       if(in_array('Client',$user->roles) && isset($form['account'])) {

           $form['account']['name']['#disabled']=TRUE;
           $form['account']['current_pass']['#disabled']=TRUE;
           $form['account']['current_pass']['#description']='';
           $form['account']['mail']['#disabled']=TRUE;

           unset($form['picture']);
           unset($form['overlay_control']);
          }
      }
 }

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