2015-08-27 3 views
11

मुझे टीम आधारित सहयोग मंच बनाने के लिए सुरक्षा नियम लिखने में कठिनाई हो रही है।समूह के लिए काम करने के लिए .read और .write सुरक्षा नियम

  1. जब कोई उपयोगकर्ता पंजीकृत करता है तो वे टीम बनाने और उपयोगकर्ताओं को उस टीम में आमंत्रित करने में सक्षम होना चाहिए।
  2. परियोजनाओं टीम के स्वामित्व में किया जाना चाहिए।
  3. है कि टीम में केवल वे उपयोगकर्ता कि इस परियोजना को देखने के लिए सक्षम होना चाहिए।
  4. उपयोगकर्ताओं को केवल टीमों वे के एक सदस्य हैं देखना चाहिए।

मैं कैसे पढ़ सकता हूं .्रेड सुरक्षा नियम ताकि उपयोगकर्ता केवल उन टीमों से जानकारी देख सकें जिनमें वे हैं?

मैं केवल सूचीबद्ध दो टीमों जाना चाहिए, क्योंकि मैं उनसे संबंधित GitHub:। 8272012

वर्तमान सुरक्षा नियम:

{ 
    "rules": { 
     ".read": true, 
     "users": { 
      "$user": { 
      //can add a message if authenticated 
      ".write": "auth.uid === $user" 
      } 
     }, 
     "teams": { 
      "$team": { 
       "users": { 
        // can write to the users list only if ADMINISTRATOR 
        "$user": { 
         ".write":"newData.parent().child(auth.uid).val() === 99" 
        } 
       } 
      } 
     }, 
     "projects": { 
      "$team": { 
      "$project": { 
       //can add a message if they are a MEMBER 
       ".write": "(!data.exists() && newData.exists() && root.child('teams/' + $team + '/users/' + auth.uid).val() >= 10)" 
      } 
      } 
     } 
    } 
} 

मैं केवल सूचीबद्ध दो टीमों जाना चाहिए, क्योंकि मैं के हैं उन्हें github:8272012

enter image description here

enter image description here

+4

मैं फ़ायरबेस में भूमिका-आधारित सुरक्षा पर इस गस्ट को देखने की सलाह दूंगा: https://gist.github.com/sararob/331760829a9dcb4be3e7 मार्गदर्शिका के उपयोगकर्ता आधारित सुरक्षा अनुभाग के साथ: https: //www.firebase .com/docs/security/guide/user-security.html – Sara

+0

@ सारा मुझे लगता है कि यह वही है जो मुझे चाहिए था। बाद में काम करेंगे। –

+0

ध्यान रखें कि [सुरक्षा नियम फ़िल्टर नहीं हैं] (https://www.firebase.com/docs/security/guide/securing-data.html#section-filter) – Kato

उत्तर

10

निम्न सुरक्षा नियम पढ़ सकते हैं और केवल उन जो कि इस परियोजना की टीम में हैं करने के लिए एक परियोजना के लिए लिखने की एक्सेस देना होगा (यह मानते हुए आप प्रत्येक उपयोगकर्ता जो परियोजनाओं से संकेत मिलता है के लिए एक /projects नोड जोड़ते कि उपयोगकर्ता) की पहुंच है:

"rules": { 
    "projects": { 
    "$project": { 
     ".read": "root.child('users').child(auth.uid).child('projects').val().child($project).exists()" , 
     ".write": "root.child('users').child(auth.uid).child('projects').val().child($project).exists()" 
    } 
    } 
} 

मैं लेकिन नहीं देख सकते हैं कि आप किस डेटा प्रत्येक परियोजना के लिए भंडारण कर रहे हैं, अगर आप इस परियोजना की टीम के लिए एक संदर्भ की दुकान आप भी कर सकते थे अपने सुरक्षा नियमों में इसका इस्तेमाल करें।

+0

मुझे पूरा भरोसा है कि आपने जो पोस्ट पहले पोस्ट किया था वह है एक बेहतर डेटा संरचना इसलिए मैं इसके लिए अपने ऐप को संशोधित कर रहा हूं और अब तक इतना अच्छा है! :) एक बार जब मैं इसे पूरी तरह से ठीक कर दूं तो इस प्रश्न को बंद करने में सक्षम हो जाएगा। Ty! –

+0

मुझे उम्मीद है कि "इस सवाल को बंद करें" का मतलब है "मेरा जवाब जोड़ें और इसे स्वीकार करें", है ना? :-) –

+0

@sara क्या आप मेरे अपडेट किए गए प्रश्न को देखने पर ध्यान देंगे? मैं यह पता लगाने की कोशिश कर रहा हूं कि केवल उन टीमों को सूचीबद्ध करने के लिए जो उपयोगकर्ता को आपके उदाहरण की तरह एक पुनर्गठित डेटाबेस के साथ सूचीबद्ध किया गया है। –

संबंधित मुद्दे