मैं एक सिम्फनी 2 एप्लिकेशन में व्यस्त हूं जिसके लिए कुछ एसीएल अनुमतियां हैं।एकाधिक उपयोगकर्ताओं के लिए Symfony2 ACL एकाधिक ऑब्जेक्ट्स तक पहुंच
मैं सिम्फनी 2 के साथ एक नौसिखिया हूं, इसलिए सुनिश्चित नहीं है कि मैं इसे सही तरीके से देख रहा हूं।
मेरे पास एकाधिक ग्राहक हैं, जिनमें से प्रत्येक एक से अधिक खाते हैं।
मेरे पास एक सुपर व्यवस्थापक (ROLE_SUPER_ADMIN) है जिसके पास सभी क्लाइंट और सभी खातों तक पहुंच है। फिर मेरे पास एक व्यवस्थापक भूमिका (ROLE_ADMIN) है, जिसे केवल एक विशिष्ट ग्राहक और उन ग्राहकों के लिए सभी खातों तक पहुंच की अनुमति होगी। फिर एजेंट (ROLE_AGENT) हैं, जिनके पास केवल ग्राहकों के लिए कुछ खातों की अनुमति होनी चाहिए।
मैं सिम्फोनी डॉक्स, जो किसी विशेष वस्तु के लिए एक उपयोगकर्ता पहुँच प्रदान करने पर देखा था, मैं निम्नलिखित कोड का उपयोग कर सकते हैं: जब कोई नया खाता बनाने तो
// creating the ACL
$aclProvider = $this->get('security.acl.provider');
$objectIdentity = ObjectIdentity::fromDomainObject($account);
$acl = $aclProvider->createAcl($objectIdentity);
// retrieving the security identity of the currently logged-in user
$securityContext = $this->get('security.context');
$user = $securityContext->getToken()->getUser();
$securityIdentity = UserSecurityIdentity::fromAccount($user);
// grant owner access
$acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER);
$aclProvider->updateAcl($acl);
, मैं दे सकता है वर्तमान में लॉग-इन नए बनाए गए खाते में उपयोगकर्ता का उपयोग। लेकिन मैं ग्राहक के अन्य सभी उपयोगकर्ताओं को खाते तक पहुंच कैसे प्रदान करूं?
मैं सभी उपयोगकर्ताओं के माध्यम से लूप नहीं करना चाहता हूं और प्रत्येक उपयोगकर्ता के लिए उपरोक्त कोड चलाऊंगा।
तो उदाहरण के लिए सभी ग्राहकों को देखते समय, मुझे यह जानने की ज़रूरत है कि उपयोगकर्ता के पास कौन से क्लाइंट हैं, या खातों को देखते समय, मुझे यह जानने की ज़रूरत है कि उपयोगकर्ता के पास कौन से खाते हैं।
क्लाइंट को नया उपयोगकर्ता जोड़ने के दौरान, उपयोगकर्ता को उस क्लाइंट के लिए स्वचालित रूप से सभी खातों तक पहुंच की आवश्यकता होती है।
एक साइड नोट के रूप में, मुझे केवल यह जानने की आवश्यकता है कि उपयोगकर्ता के पास खाता/ग्राहक तक पहुंच है या नहीं। यदि किसी उपयोगकर्ता के पास पहुंच है, तो उन्हें स्वचालित रूप से देखने/संपादित करने/हटाने आदि की अनुमति है
यदि आपको विशिष्ट भूमिका में प्रत्येक उपयोगकर्ता को अनुमतियां असाइन करने की आवश्यकता है तो आपको इसके बजाय भूमिका-आधारित 'एसीएल' का उपयोग करना चाहिए ... जो कि खाता-आधारित समान है। मुझे कुछ उदाहरण कोड लिखने में सक्षम होना चाहिए (अगले कुछ घंटों में)। हालांकि यदि भूमिकाएं कुछ नहीं हैं, तो आप ** ** को प्रत्येक उपयोगकर्ता के माध्यम से पुन: प्रयास करने की आवश्यकता होगी जिसे आप अनुमति देना चाहते हैं .... –