मैं एक दूसरी व्यवस्थापक साइट को कार्यान्वित करना चाहता हूं जो प्राथमिक व्यवस्थापक साइट की सुविधा का सबसेट प्रदान करता है। यह संभव है और Django docsगैर-कर्मचारी उपयोगकर्ता द्वारा Django व्यवस्थापक साइट को कैसे पहुंचाया जाए?
में वर्णित है, हालांकि, मैं प्राथमिक व्यवस्थापक साइट पर पहुंच को सीमित करना चाहता हूं। कुछ उपयोगकर्ता दूसरी साइट तक पहुंच सकते हैं लेकिन प्राथमिक साइट नहीं।
आदेश है कि सुविधा को लागू करने के लिए, मैं इन उपयोगकर्ताओं को स्टाफ (is_staff = झूठी) में होना चाहते हैं और फिर से लिखने AdminSite.has_permission
class SecondaryAdminSite(AdminSite):
def has_permission(self, request):
if request.user.is_anonymous:
try:
username = request.POST['username']
password = request.POST['password']
except KeyError:
return False
try:
user = User.objects.get(username = username)
if user.check_password(password):
return user.has_perm('app.change_onlythistable')
else:
return False
except User.DoesNotExist:
return False
else:
return request.user.has_perm('app.change_onlythistable')
दुर्भाग्य से, इस दृष्टिकोण से काम नहीं करता होगा। उपयोगकर्ता लॉगिन कर सकता है लेकिन द्वितीयक व्यवस्थापक साइट में कुछ भी नहीं देख सकता है।
इस दृष्टिकोण के साथ क्या गलत है? कोई भी विचार इस सुविधा को कैसे कार्यान्वित करें?
अग्रिम धन्यवाद
आप अपने उपयोगकर्ताओं को सुपरसर्स, प्रबंधकों, ग्राहकों आदि में क्यों विभाजित नहीं करते हैं - अनुमति प्रणाली पूरी तरह से काम करती है। –
@ टोमाज़: मैं भी ऐसा कर रहा हूं। दूसरी प्रशासनिक साइट का एक अलग उद्देश्य है इसलिए विभिन्न प्रकार के उपयोगकर्ताओं को संबोधित करें। मैं इससे बचना चाहूंगा कि वे सामान्य व्यवस्थापक से जुड़ें। – luc
मुझे लगता है कि आप सत्यापित कर रहे हैं कि सही 'has_permission' कहा जा रहा है? पृष्ठ पर जो कुछ भी दिखाई नहीं देता है (यानी यह पूरी तरह खाली है), या यह केवल व्यवस्थापक कार्यों को छुपा रहा है? –