दृश्य मॉड्यूल: उपयोगकर्ता द्वारा पहुंच को कैसे सीमित करें


8

मैं व्यू मॉड्यूल का उपयोग कर रहा हूं ताकि एक दृश्य बनाया जा सके कि केवल विशिष्ट उपयोगकर्ता ही पहुंच सकें। मुझे पता है कि दृश्यों में भूमिका या अनुमतियों द्वारा अभिगम नियंत्रण शामिल है, लेकिन मुझे कुछ अधिक बारीक-बारीक चाहिए: मूल रूप से, मैं केवल उपयोगकर्ता को "x" कहने में सक्षम होना चाहता हूं और उपयोगकर्ता "y" किसी विशेष दृश्य (या किसी और के साथ) का उपयोग कर सकता है एक साइट व्यवस्थापक भूमिका)। तो यह एसीएल मॉड्यूल को अलग-अलग नोड्स के लिए कैसे कार्य करता है इसके समान कार्य करेगा।

कस्टम दृष्टिकोण एक्सेस प्लगइन बनाने के लिए सबसे अच्छा तरीका है? मुझे इसके साथ ज्यादा अनुभव नहीं है।

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

कोई विचार? या क्या मैं इसे और अधिक जटिल बना रहा हूं जितना कि इसे करने की आवश्यकता है?

धन्यवाद, बेन


आपको एक विचार एक्सेस प्लगइन लिखना पड़ सकता है लेकिन यदि आप अपने प्रश्न को थोड़ा और विस्तार से अपडेट कर सकते हैं तो शायद आप इसे एक और तरीका हासिल कर सकते हैं। दृश्य क्या करता / प्रदर्शित करता है? किन उपयोगकर्ताओं को इसे देखने की अनुमति है? क्या उपयोगकर्ताओं की अलग-अलग भूमिकाएँ हैं? क्या उपयोगकर्ताओं के पास एक विशिष्ट फ़ील्ड या उनसे जुड़ी कोई चीज़ है जो उन्हें इसे एक्सेस करने की अनुमति देती है?
जेमी होलेर्न

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

इस तरह, आपूर्तिकर्ता निरंतर आधार पर अपने उत्पाद की बिक्री की निगरानी कर सकता है। लेकिन मैं "आपूर्तिकर्ता" भूमिका के साथ सभी को पहुँच प्रदान नहीं करना चाहता क्योंकि तब कोई भी आपूर्तिकर्ता बिक्री के अन्य उत्पादों को देखने में सक्षम होगा। सही बात? ;-)
बेनके

जवाबों:


5

दृश्य पर अनुमतियों को सीमित करने के बजाय, आप मेनू आइटम पर अनुमतियों को सीमित कर सकते हैं जो उस दृश्य की ओर जाता है (यह नोड या मेनू कॉलबैक पर एक टैब हो)। आप केवल "डिफॉल्ट" डिस्प्ले और नो पेज डिस्प्ले के साथ अपना विचार बना सकते हैं (ताकि उपयोगकर्ता केवल इसका पता नहीं लगा सकें)। फिर अपने page callbackमेनू आइटम के लिए बस views_embed_viewदृश्य प्रदर्शित करने के लिए कॉल करें । ऐसा लगता है कि मेनू आइटम पर अनुमतियों को संभालने से दृश्य के लिए एक नया प्लग-इन लिखने की तुलना में आसान हो सकता है (हालांकि एक प्लग-इन दूसरों के लिए सहायक हो सकता है)।


सलाह के लिये धन्यवाद! मैंने इस सामान्य दृष्टिकोण (जिसे बर्दिर द्वारा भी सुझाव दिया गया था) का पालन किया, लेकिन प्रत्येक उपयोगकर्ता को field_usercanaccess नामक नोड पर एक संदर्भ क्षेत्र बनाया। मैं हुक_मेनू () का उपयोग करने में सक्षम था और एक एक्सेस कॉलबैक को परिभाषित करता था जिससे यह सुनिश्चित होता था कि वर्तमान उपयोगकर्ता फ़ील्ड में संदर्भित उपयोगकर्ता से मेल खाता है। अन्यथा, टैब (और दृश्य) प्रदर्शित नहीं किया जाएगा। यह बढ़िया काम कर रहा है! :-)
बेनके

@ बेन्क कमाल! मुझे खुशी है कि आपको कुछ काम मिला। Drupal उत्तर को एक महान संसाधन बनाने में मदद करने के भाग के रूप में, आपको उन उत्तर (या प्रश्नों) पर भी वोट देना चाहिए जिन्हें आपने उपयोगी पाया है। तो आपको शायद @ बेर्डिर के जवाब के लिए वोट करना चाहिए (और मेरा, लेकिन यह मुझे वोट पाने की कोशिश नहीं है, यह ड्रुपल उत्तर को एक बेहतर साइट बनाने की कोशिश कर रहा है)
चुलकी

धन्यवाद। :-) मैं स्टैक एक्सचेंज में नया हूं और मुझे केवल 13 अंक मिले हैं। जब मैं मतदान करने की कोशिश करता हूं, तो यह कहता है कि मुझे मतदान करने के लिए 15 बिंदु चाहिए। इसलिए अगर किसी के पास दो बिंदु हैं (या मैं उन्हें किसी और तरीके से कमा सकता हूं) तो मैं निश्चित रूप से जवाब और सवालों पर वोट करूंगा। --बैन
बेनके

@ बन्ने ओह ठीक है, मैं 15 बिंदु की सीमा के बारे में भूल गया। आप हमेशा एक सवाल का जवाब देने की कोशिश कर सकते हैं ... आपके जवाब पर एक अपवोट 10 प्रतिनिधि को मिलता है।
चुलकी

6

दृश्य एक्सेस कॉलबैक मॉड्यूल का प्रयास करें ।

दृश्य के लिए कॉलबैक-आधारित अभिगम नियंत्रण प्रदान करता है।

उपलब्ध कॉलबैक फ़ंक्शन को hook_views_access_callbacks()फ़ंक्शन (उसी तरह से hook_perm()) का उपयोग करके मॉड्यूल द्वारा परिभाषित किया जाता है , फिर दृश्य "एक्सेस प्रतिबंध" कॉन्फ़िगरेशन में सेट किया जा सकता है।


एक अजीब घातक त्रुटि को छोड़कर विचारों का उपयोग कॉलबैक महान काम करता है। यहाँ देखें: drupal.stackexchange.com/questions/3336/... । यह जाने का तरीका जैसा लगता है - लेकिन इसे कैसे ठीक करें?
Druvision

2

मुझे कुछ याद आ रहा है, लेकिन ऐसा लगता है कि आप एक नई भूमिका बनाएंगे और इन उपयोगकर्ताओं को जोड़ेंगे। फिर व्यूज एक्सेस: रोल फीचर का उपयोग करें।

यदि आपको सामग्री में एक्सेस अधिकारों को टाई करने की आवश्यकता है, तो मैं एक कस्टम दृश्य एक्सेस का उपयोग करूंगा, जिसे मैंने पहली बार स्थापित करने में दर्द पाया था, लेकिन काम करने के बाद लचीलेपन की सराहना करें। यदि दृश्य मेनू आइटम जनरेट कर रहा है, तो यह तब नहीं दिखाई देगा जब व्यू एक्सेस फ़ंक्शन को पास नहीं करता है।

यदि आप केवल एक मेनू आइटम छिपा रहे हैं, तो यह मुझे प्रतीत होगा कि दृश्य अभी भी चलेगा और एक उपयोगकर्ता डेटा देखने के लिए एक यूआरआई को ट्विक कर सकता है।

जैरी


1

अपने उद्देश्यों के लिए विशेष रूप से कुछ नई अनुमतियां बनाने के लिए कस्टम अनुमतियों के मॉड्यूल का उपयोग करने के बारे में कैसे , और फिर उन उपयोगकर्ताओं को व्यक्तिगत उपयोगकर्ताओं को नई अनुमतियों को असाइन करने के लिए उपयोगकर्ता अनुमतियों के मॉड्यूल का उपयोग कर रहे हैं?

कस्टम अनुमतियाँ मॉड्यूल बहुत हल्का है। मैं हालांकि उपयोगकर्ता अनुमतियों के मॉड्यूल के बारे में निश्चित नहीं हूं, क्योंकि यह अनिवार्य रूप से पर्दे के पीछे प्रत्येक उपयोगकर्ता के लिए एक नई भूमिका बनाता है (ये भूमिकाएं मुख्य अनुमतियों के पृष्ठ पर दिखाई नहीं देती हैं)। यदि आपके पास बहुत से उपयोगकर्ता हैं, तो यह आपकी भूमिकाओं और user_roles तालिकाओं के आकार को थोड़ा बढ़ा सकता है।


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

मैं कोशिश करूँगा कि वापस रिपोर्ट करूँ।
बेनके

0

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


हाँ, मैं चीजों को एक कोशिश करूँगा और वापस रिपोर्ट करूँगा। मैं एक तर्क के साथ एक विचार एक्सेस प्लगइन की कोशिश कर रहा हूं, इसलिए हम देखेंगे कि यह कैसे जाता है। धन्यवाद।
बेनके

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