'उपयोगकर्ता का डेटा मिटाएं' एक्सटेंशन का इस्तेमाल करना

उपयोगकर्ता का डेटा मिटाने वाले एक्सटेंशन (delete-user-data) की मदद से, किसी उपयोगकर्ता को Firebase प्रोजेक्ट से हटाए जाने पर उसका डेटा मिटाया जा सकता है. इस एक्सटेंशन को कॉन्फ़िगर करके, Cloud Firestore, रीयलटाइम डेटाबेस या Cloud Storage में से किसी एक या सभी से उपयोगकर्ता का डेटा मिटाया जा सकता है. डेटा को मिटाने के लिए, एक्सटेंशन का हर ट्रिगर, उपयोगकर्ता के UserId में डाला जाता है.

यह एक्सटेंशन, उपयोगकर्ता की निजता बनाए रखने और ज़रूरी शर्तों का पालन करने में मदद करता है. हालांकि, इस एक्सटेंशन का इस्तेमाल करने से यह गारंटी नहीं मिलती कि सरकार और इंडस्ट्री के नियमों का पालन किया जाएगा.

ज़रूरी शर्तें

  • उपयोगकर्ताओं को मैनेज करने के लिए, आपको Firebase Authentication का इस्तेमाल करना होगा.

  • यह एक्सटेंशन सिर्फ़ Cloud Firestore, Realtime Database, और Cloud Storage से डेटा मिटाता है. अगर आपने उपयोगकर्ता का डेटा किसी अन्य जगह पर सेव किया है, तो उपयोगकर्ताओं के खाते मिटाने के साथ-साथ, आपको उन सोर्स से भी उपयोगकर्ता का डेटा मिटाना होगा.

एक्सटेंशन इंस्टॉल करना

एक्सटेंशन इंस्टॉल करने के लिए, Firebase एक्सटेंशन इंस्टॉल करें पेज पर दिए गए चरणों का पालन करें. संक्षेप में, इनमें से कोई एक काम करें:

एक्सटेंशन इंस्टॉल करते समय, आपको कॉन्फ़िगरेशन के कई पैरामीटर तय करने के लिए कहा जाएगा:

  • Cloud Functions की जगह:

    वह जगह चुनें जहां आपको इस एक्सटेंशन के लिए बनाए गए फ़ंक्शन डिप्लॉय करने हैं. आम तौर पर, आप अपने डेटाबेस के पास की जगह पाना चाहते हैं. जगह चुनने में मदद पाने के लिए, जगह चुनने की गाइड देखें.

  • Cloud Firestore के पाथ:

    आपके क्लाउड Firestore इंस्टेंस में कौनसे पाथ उपयोगकर्ता के डेटा को शामिल करते हैं? अगर Cloud Firestore का इस्तेमाल नहीं किया जाता है, तो इसे खाली छोड़ दें. कॉमा से अलग करके पूरा पाथ डालें. मिटाए गए उपयोगकर्ता के यूज़र आईडी को {UID} से दिखाया जा सकता है. उदाहरण के लिए, अगर आपके पास users और admins कलेक्शन हैं और हर कलेक्शन में ऐसे दस्तावेज़ हैं जिनके दस्तावेज़ आईडी के तौर पर User ID है, तो users/{UID},admins/{UID} डाला जा सकता है.

  • Cloud Firestore का मिटाने वाला मोड:

    (यह सिर्फ़ तब लागू होता है, जब Cloud Firestore paths पैरामीटर का इस्तेमाल किया जाता है.) आप Cloud Firestore के दस्तावेज़ों को कैसे मिटाना चाहते हैं? अगर आपको उप-संग्रहों के दस्तावेज़ भी मिटाने हैं, तो इस पैरामीटर को recursive पर सेट करें.

  • Realtime Database इंस्टेंस:

    आपको किस रीयलटाइम डेटाबेस इंस्टेंस से उपयोगकर्ता का डेटा मिटाना है?

  • Realtime Database की जगह:

    (यह सिर्फ़ तब लागू होता है, जब आपने Realtime Database instance पैरामीटर की वैल्यू दी हो.) आपको रीयलटाइम डेटाबेस की किस जगह से उपयोगकर्ता का डेटा मिटाना है?

  • रीयलटाइम डेटाबेस पाथ:

    आपके रीयलटाइम डेटाबेस इंस्टेंस में कौनसे पाथ उपयोगकर्ता के डेटा को शामिल करते हैं? अगर आपको रीयलटाइम डेटाबेस का इस्तेमाल नहीं करना है, तो इसे खाली छोड़ दें. कॉमा से अलग करके पूरा पाथ डालें. मिटाए गए उपयोगकर्ता के यूज़र आईडी को {UID} से दिखाया जा सकता है. उदाहरण के लिए: users/{UID},admins/{UID}.

  • Cloud Storage के पाथ:

    आप Google Cloud Storage में उपयोगकर्ता का डेटा कहां सेव करते हैं? अगर Cloud Storage का इस्तेमाल नहीं किया जाता है, तो इसे खाली छोड़ दें. अपने स्टोरेज बकेट में कॉमा से अलग करके, फ़ाइलों या डायरेक्ट्री का पूरा पाथ डालें. मिटाए गए उपयोगकर्ता का User ID दिखाने के लिए {UID} का इस्तेमाल करें और अपना डिफ़ॉल्ट स्टोरेज बकेट दिखाने के लिए {DEFAULT} का इस्तेमाल करें.

    यहां कुछ उदाहरण दिए गए हैं:

    • अगर आपको अपने डिफ़ॉल्ट बकेट में मौजूद उन सभी फ़ाइलों को मिटाना है जिनके नाम {UID}-pic.png के हिसाब से रखे गए हैं, तो {DEFAULT}/{UID}-pic.png डालें.
    • अगर आपको {UID}-logs.txt नाम वाले किसी दूसरे बकेट में मौजूद सभी फ़ाइलें भी मिटानी हैं, तो {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt डालें. इन फ़ाइलों के नाम {UID}-logs.txt के हिसाब से रखे गए हैं.my-app-logs
    • User ID के तौर पर लेबल की गई डायरेक्ट्री और उसकी सभी फ़ाइलों (जैसे, media/{UID}) को भी मिटाने के लिए, {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID} डालें.

मिटाने के लिए डेटा का पता लगाना

यह एक्सटेंशन, डेटा को मिटाने के लिए कुछ तरीकों का इस्तेमाल करता है. एक्सटेंशन को डेटा मिटाने की अनुमति देने के लिए, इन तरीकों को साफ़ तौर पर कॉन्फ़िगर करना होगा. एक्सटेंशन सिर्फ़ उस डेटा को मिटाएगा जिसे मिटाने के लिए साफ़ तौर पर कॉन्फ़िगर किया गया है. ऐसा, उपलब्ध कराए गए तरीकों के आधार पर किया जाएगा.

हर सेवा के व्यवहार में होने वाले इन अंतरों के बारे में जानें:

  • Cloud Firestore: डिफ़ॉल्ट रूप से, किसी दस्तावेज़ को पूरी तरह से नहीं मिटाया जाता है. सब-कलेक्शन नहीं मिटाए जाएंगे. किसी दस्तावेज़ के सभी सब-कलेक्शन को बार-बार मिटाने के लिए, "Cloud Firestore का मिटाने का मोड" विकल्प को "बार-बार होने वाला" पर सेट करें.
  • Realtime Database: चुने गए नोड का सारा डेटा मिट जाएगा.
  • स्टोरेज: अगर किसी डायरेक्ट्री का पाथ दिया गया है, तो सभी फ़ाइलें और सब-डायरेक्ट्री मिटा दी जाएंगी.

पाथ के हिसाब से

Cloud Firestore, Realtime Database, और Cloud Storage के पाथ कॉन्फ़िगर करते समय, पाथ में UID वैरिएबल को तय किया जा सकता है. इसे पुष्टि किए गए उपयोगकर्ता के यूआईडी से बदल दिया जाएगा. किसी उपयोगकर्ता का खाता मिटाने पर, एक्सटेंशन दिए गए पाथ पर उस यूआईडी से जुड़ा सारा डेटा मिटा देगा. उदाहरण के लिए:

  • Cloud Firestore के पाथ: users/{UID},admins/{UID}
  • रीयलटाइम डेटाबेस पाथ: likes/{UID}
  • Cloud Storage के पाथ: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

अपने-आप पता लगाने की सुविधा (Cloud Firestore)

एक्सटेंशन को अपने-आप Firestore दस्तावेज़ों का पता लगाने और उन्हें मिटाने की अनुमति देने के लिए, "अपने-आप दस्तावेज़ों का पता लगाने की सुविधा चालू करें" कॉन्फ़िगरेशन पैरामीटर को "हां" पर सेट करें.

अपने-आप खोज करने की सुविधा, डेटाबेस को अपने-आप स्कैन करती है. इससे, आपके कॉन्फ़िगरेशन के हिसाब से उन कलेक्शन और दस्तावेज़ों का पता चलता है जिन्हें मिटाना है. एक्सटेंशन, इन कलेक्शन और दस्तावेज़ों की पहचान इस तरीके से करता है:

  1. सबसे पहले, एक्सटेंशन डेटाबेस में मौजूद सभी रूट कलेक्शन ढूंढता है. अगर किसी कलेक्शन का आईडी, उपयोगकर्ता के यूआईडी से मेल खाता है, तो पूरा कलेक्शन मिटा दिया जाता है. मिटाने का यह तरीका, "Cloud Firestore delete mode" के लिए एक्सटेंशन के कॉन्फ़िगरेशन के आधार पर, रिकर्सिव या शैलो होता है.
  2. दूसरा, अगर कलेक्शन आईडी मैच नहीं करता है, तो एक्सटेंशन ऐसे दस्तावेज़ की पहचान करने और उसे मिटाने की कोशिश करेगा जिसका दस्तावेज़ आईडी, उपयोगकर्ता के यूआईडी से मैच करता हो.
  3. आखिर में, हर दस्तावेज़ के लिए: a. अगर खोज की मौजूदा डेप्थ (नीचे देखें) खोज की कॉन्फ़िगर की गई डेप्थ से कम या उसके बराबर है, तो मौजूदा दस्तावेज़ के सभी सब-कलेक्शन के लिए प्रोसेस दोहराई जाएगी. b. अगर खोज के फ़ील्ड कॉन्फ़िगर किए गए हैं, तो एक्सटेंशन यह देखेगा कि दिए गए फ़ील्ड, उपयोगकर्ता के यूआईडी से मेल खाते हैं या नहीं. अगर कोई मिलता-जुलता दस्तावेज़ मिलता है, तो उसे मिटा दिया जाएगा.

खोज गहराई

एक्सटेंशन में, खोज के नतीजों की संख्या को कॉन्फ़िगर करने की सुविधा मिलती है. डिफ़ॉल्ट रूप से, यह संख्या 3 पर सेट होती है. ट्रावर्सल सिर्फ़ तब किया जाएगा, जब खोज की मौजूदा डेप्थ, कॉन्फ़िगर की गई खोज की डेप्थ से कम या उसके बराबर हो. खोज के मौजूदा नतीजे, मौजूदा कलेक्शन या दस्तावेज़ों के पैरंट कलेक्शन के आधार पर तय होते हैं. उदाहरण के लिए

/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2

यह एक्सटेंशन, ऐरे या मैप में सेव किए गए यूआईडी को अपने-आप नहीं मिटाएगा. साथ ही, यह ऊपर बताई गई सीमा से ज़्यादा नेस्ट की गई सब-कलेक्शन में, उपयोगकर्ता आईडी के हिसाब से सेव किए गए डेटा को नहीं ढूंढेगा.