2012-06-20 10 views
7

मैं एक निजी मीडियाविकी उदाहरण स्थापित करने की कोशिश कर रहा हूं जो उपयोगकर्ताओं को किसी भी सामग्री को देखने के लिए लॉगिन करने की अपेक्षा करता है। मैंने Localsettings.php फ़ाइल में $ wgWhitelistRead चर को tweaking करने की कोशिश की लेकिन यह अभी भी मुझे एक पृष्ठ पर ले जाता है जो कहता है, "लॉगिन आवश्यक"। मैं चाहता हूं कि विकी विशेष पर रीडायरेक्ट करें: userLogin यदि कोई उपयोगकर्ता लॉग इन नहीं है। मैं यह कैसे कर सकता हूं?मैं सीधे मीडियाविकी 1.1 9 .1 के लैंडिंग पेज को कैसे बदल सकता हूं विशेष: उपयोगकर्ता लॉग इन

मुझे similar question on the mwforums मिला लेकिन यह मीडियाविकी के पुराने संस्करण के लिए प्रतीत होता है। कोई विचार?

उत्तर

11

ऐसा करने के लिए प्रतीत होता है प्राकृतिक जगह OutputPage::showPermissionsErrorPage() में होगी। विशेष रूप से, वास्तविक त्रुटि संदेश निम्नांकित दो पंक्तियों में प्रदर्शित होता है:

$this->prepareErrorPage($this->msg('loginreqtitle')); 
$this->addHTML($this->msg($msg)->rawParams($loginLink)->parse()); 

विशेष के लिए सीधे अनुप्रेषित करने के लिए:

$this->redirect(SpecialPage::getTitleFor('Userlogin')->getFullURL($query)); 
: सकतें हैं, आप उन्हें इस (! अपरीक्षित) कोड की तरह कुछ के साथ बदल सकते

हां, ऐसा कोई भी सुविधाजनक hook प्रतीत नहीं होता है जो आपको विस्तार से ऐसा करने देता है, इसलिए ऐसा लगता है कि आपको कोड को पैच करने का सहारा लेना होगा। यह एक हुक के लिए एक प्राकृतिक जगह की तरह दिखता है, इसलिए file a feature request को यह एक बुरा विचार नहीं हो सकता है कि ऐसा हुक जोड़ा जाए।

(वैकल्पिक रूप से, आप वास्तव में एक लॉगिन फॉर्म आउटपुट कर सकते हैं, लेकिन यह विशेष रूप से विशेष: UserLogin पर रीडायरेक्ट करने के बजाय लागू करने के लिए थोड़ा सा कठिन हो सकता है। एक नज़र में, मुझे कोई सुविधाजनक "outputLoginForm()" नहीं मिला Special:UserLogin code में कॉल करने के लिए विधि, और जब आप मेल खाने वाले लॉगिन फॉर्म को स्वयं उत्पन्न करना मुश्किल नहीं करते हैं, तो इसका मतलब यह होगा कि फ़ॉर्म में बाद में कोई भी परिवर्तन संगतता तोड़ सकता है।)

+0

धन्यवाद! यह उम्मीद के रूप में काम करता है। लेकिन क्या यह प्रत्येक अनुमतियों के लिए उपयोगकर्ता लॉग इन पेज नहीं दिखाएगा त्रुटि कॉल? क्या होगा यदि इसे अपर्याप्त अनुमतियों के लिए कहा जाता है? –

+0

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

+0

धन्यवाद, केवल मामूली समस्या, आपके उत्तर में लिंक [आउटपुटपेज :: शोप्रमिशन एररपेज()] (https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/core.git;a=blob;f=includes /OutputPage.php#l2063) और [विशेष: उपयोगकर्ता लॉग इन कोड] (https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/core.git;a=blob;f=includes/specials/SpecialUserlogin.php ; एच = 13ea5def2ec3e4d9a363440f757675b0099c49e8; एचबी = रेफ/हेड/आरईएल 1_1 9) अब और काम नहीं करते हैं। शायद https://github.com/wikimedia/mediawiki/blob/master/includes/OutputPage.php#L2454 में बदलें? – escalator

1

एक विशेष रूप से भयानक हैक के रूप में, लॉगिन लॉगिन की आवश्यकता होने पर आप लॉगिन फॉर्म को प्रदर्शित संदेश में डाल सकते हैं (यह loginreqpagetext संदेश होना चाहिए)। विरोधी सीएसआरएफ सुरक्षा के कारण यह गैर-मामूली होगा, लेकिन आप AJAX के माध्यम से इसके आसपास काम कर सकते हैं। (निश्चित रूप से बहुत बेहतर समाधान हैं; यह करने का यह तेज़ और गंदा तरीका है।)