मैं फायरस्टोर का उपयोग करके एक वेब-ऐप बना रहा हूं जो उपयोगकर्ताओं को परियोजनाओं पर कॉर्पोरेट करने और प्रत्येक प्रोजेक्ट में फ़ाइलों को साझा करने की अनुमति देता है। मैं प्रत्येक फ़ाइल के उपयोगकर्ताओं को पढ़ने के अधिकार को नियंत्रित करने के लिए फायरबेस स्टोरेज नियम स्थापित करने की कोशिश कर रहा हूं, इसलिए केवल एक उपयोगकर्ता जो किसी प्रोजेक्ट में भाग लेता है वह उस फ़ाइल को पढ़ सकता है। मैं प्रत्येक उपयोगकर्ता का यूआईडी लिखता हूं जिसके पास मेटाडेटा में फ़ाइल पढ़ने का अधिकार है, इसलिए मेटाडेटा कस्टम डेटा में मूल्य जोड़े शामिल हैं जैसे: 'user0': uid0, 'user1': uid1, आदि। मेरा सवाल यह है कि मैं कैसे सेटअप कर सकता हूं भंडारण नियम जो केवल मेटाडेटा में अपने यूआईडी वाले उपयोगकर्ता को फ़ाइल पढ़ने की अनुमति देता है। मैंने कुछ इस तरह की कोशिश की है:

allow read: if request.auth.uid in resource.metadata;

लेकिन यह काम नहीं करता। केवल एक चीज जो मुझे काम पर मिल सकती है वह है:

 allow read: if request.auth.uid == resource.metadata.user0 ||
                                 request.auth.uid == resource.metadata.user1 ||
                     request.auth.uid == resource.metadata.user2 ||
                     request.auth.uid == resource.metadata.user3 ||
                     request.auth.uid == resource.metadata.user4 ||
                     request.auth.uid == resource.metadata.user5 ||
                     request.auth.uid == resource.metadata.user6 ||
                     request.auth.uid == resource.metadata.user7 ||
                     request.auth.uid == resource.metadata.user8 ||
                     request.auth.uid == resource.metadata.user9;

लेकिन फिर मुझे यह तय करना होगा कि कितने उपयोगकर्ता फ़ाइल साझा कर सकते हैं और यह मेरी परियोजना आवश्यकताओं को पूरा नहीं करता है।

क्या संसाधन.मेटाडेटा में 'if request.auth.uid' जैसा कुछ बनाने का कोई तरीका है? या क्या कोई फ़ाइल एक्सेस अधिकारों को संभालने का एक और तरीका सुझा सकता है, जहां मैं प्रत्येक फ़ाइल के लिए उपयोगकर्ताओं के अधिकारों की एक चर संख्या दे सकता हूं?

0
Jørgen Rasmussen 27 नवम्बर 2018, 17:53

1 उत्तर

सबसे बढ़िया उत्तर

user0 नाम की कुंजियों का उपयोग करने के बजाय, उपयोगकर्ता के वास्तविक UID को मेटाडेटा कुंजी के रूप में उपयोग करें, और इसे "1" जैसे कुछ डमी मान असाइन करें। अब आपका नियम लिखना बहुत आसान है। यह कुछ इस तरह जा सकता है:

allow read: if resource.metadata[request.auth.uid] == "1";

और आपके पास संपादन योग्य मेटाडेटा पेलोड में जितने फिट होंगे उतने उपयोगकर्ता हो सकते हैं।

2
Doug Stevenson 27 नवम्बर 2018, 15:38