प्रोग्रामर लॉग-इन करने के लिए वर्तमान में लॉग-इन किए बिना किसी अन्य उपयोगकर्ता का उपयोग कर रहा है


9

एक मॉड्यूल को वैश्विक के मूल्य को कैसे बदलना चाहिए $user, अपने स्वयं के कोड को निष्पादित करना चाहिए , और $userयदि कोई त्रुटि होती है, तो वर्तमान उपयोगकर्ता को लॉग आउट किए बिना मूल मूल्य को पुनर्स्थापित करना चाहिए?


इस बारे में एक पुराना मुद्दा खुला है, जो एक फ़ंक्शन को जोड़ता है जो कई बार कॉल करने पर भी इसे ठीक से संभाल सकता है। Drupal.org/node/287292 देखें । कृपया वहां पैच की समीक्षा करें और परीक्षण करें।
बेर्दिर

1
एक सामुदायिक प्रलेखन बनाया गया है जिसमें Drupal 6, Drupal 7 और Drupal 8 के लिए एक अन्य उपयोगकर्ता को drupal.org पर प्रतिरूपण करने का समाधान है ।
स्ट्रीकर

जवाबों:


18

Drupal_cron_run () समारोह वास्तव में इस के लिए एक आदर्श उदाहरण देता है, क्योंकि यह जब भी क्रॉन चलाया जाता है गुमनाम करने के लिए वर्तमान उपयोगकर्ता बदल जाता है, तो उसके बाद यह किया जाता है वापस स्विच।

// Prevent session information from being saved while doing funky stuff.
$original_session_state = drupal_save_session();
drupal_save_session(FALSE);

// Force the current user to anonymous to ensure consistent permissions on
// funky stuff runs.
$original_user = $GLOBALS['user'];
$GLOBALS['user'] = drupal_anonymous_user(); // Or use user_load() for a non-anonymous user.

// Do funky stuff here...

// Restore the user.
$GLOBALS['user'] = $original_user;
drupal_save_session($original_session_state);

वर्थ नोटिंग आप वर्तमान उपयोगकर्ता ऑब्जेक्ट को कहीं दूर रख सकते हैं ( $GLOBALSया सुरक्षित रखने के लिए किसी अन्य चर में) और किसी भी उपयोगकर्ता को उनके साथ लोड करके स्विच कर सकते हैं user_load()। जो आपको कुछ भयानक चीजें करने की अनुमति देता है जैसे एक विशिष्ट प्रक्रिया को करने के लिए विशिष्ट अनुमतियों के साथ स्थापित विशिष्ट उपयोगकर्ताओं के रूप में। सिद्धांत एक ही है।
ग्रेग

कोड के इस टुकड़े के साथ केवल संभावित 1 समस्या। आपको पुराने सत्र को एक चर $ old_session में सहेजना चाहिए। सहेजें सत्र को गलत पर सेट करें, फिर अंत में drupal_save_session ($ old_session)।
स्ट्रीकर

अन्य उपयोगकर्ता के रूप में drupal.org/project/phantomjs_capture का उपयोग करके स्क्रीन को एक्सेस करना और कैप्चर करना । क्या यह संभव है / मुश्किल? (डीओ जारी करें drupal.org/node/2899252 )।
किरिंगिंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.