उपयोगकर्ता का डेटा मिटाने वाला एक्सटेंशन (delete-user-data) आपको किसी उपयोगकर्ता का डेटा मिटाने की सुविधा देता है. यह सुविधा तब काम करती है, जब उपयोगकर्ता को आपके Firebase प्रोजेक्ट से मिटाया जाता है. आपके पास इस एक्सटेंशन को कॉन्फ़िगर करने का विकल्प होता है, ताकि Cloud Firestore, रीयलटाइम डेटाबेस या Cloud Storage में मौजूद उपयोगकर्ता का डेटा मिटाया जा सके. इसके अलावा, इन तीनों प्लैटफ़ॉर्म पर मौजूद उपयोगकर्ता का डेटा भी मिटाया जा सकता है. डेटा मिटाने के लिए, एक्सटेंशन का हर ट्रिगर, उपयोगकर्ता के UserId में डाला जाता है.
यह एक्सटेंशन, उपयोगकर्ता की निजता बनाए रखने और ज़रूरी शर्तों का पालन करने में मदद करता है. हालांकि, इस एक्सटेंशन का इस्तेमाल करना सरकार और उद्योग के नियमों के पालन की गारंटी नहीं देता है.
ज़रूरी शर्तें
उपयोगकर्ताओं को मैनेज करने के लिए, Firebase से पुष्टि करने की सुविधा का इस्तेमाल करना ज़रूरी है.
यह एक्सटेंशन, सिर्फ़ Cloud Firestore, रीयलटाइम डेटाबेस, और Cloud Storage से डेटा मिटाता है. अगर उपयोगकर्ता का डेटा कहीं और सेव किया जाता है, तो उपयोगकर्ताओं को मिटाने के दौरान, आपको उन सोर्स से भी उपयोगकर्ता का डेटा मिटाना चाहिए.
एक्सटेंशन इंस्टॉल करना
एक्सटेंशन इंस्टॉल करने के लिए, Firebase एक्सटेंशन इंस्टॉल करें पेज पर दिया गया तरीका अपनाएं. संक्षेप में, इनमें से कोई एक काम करें:
Firebase कंसोल: इस बटन पर क्लिक करें:
सीएलआई: यह कमांड दें:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
एक्सटेंशन इंस्टॉल करने के दौरान, आपको कॉन्फ़िगरेशन के कई पैरामीटर की जानकारी देने के लिए कहा जाएगा:
Cloud Functions की जगह:
वह जगह चुनें जहां आपको इस एक्सटेंशन के लिए बनाए गए फ़ंक्शन डिप्लॉय करने हैं. आम तौर पर, आप अपने डेटाबेस के पास की जगह पाना चाहते हैं. जगह चुनने में मदद के लिए, जगह चुनने की गाइड देखें.
Cloud Firestore के पाथ:
आपके Cloud Firestore इंस्टेंस में कौनसे पाथ उपयोगकर्ता के डेटा को शामिल करते हैं? अगर आप Cloud Firestore का इस्तेमाल नहीं करते हैं, तो खाली छोड़ें. कॉमा से अलग करके पूरा पाथ डालें. मिटाए गए उपयोगकर्ता का User-ID दिखाने के लिए,
{UID}का इस्तेमाल किया जा सकता है. उदाहरण के लिए, अगर आपके पासusersऔरadminsके कलेक्शन हैं. साथ ही, हर कलेक्शन में दस्तावेज़ आईडी के तौर पर User-ID वाले दस्तावेज़ हैं, तोusers/{UID},admins/{UID}डालें.Cloud Firestore का मिटाने वाला मोड:
(यह सिर्फ़ तभी लागू होगा, जब
Cloud Firestore pathsपैरामीटर इस्तेमाल किया जाएगा.) आपको Cloud Firestore के दस्तावेज़ों को कैसे मिटाना है? अगर आपको सब-कलेक्शन के दस्तावेज़ों को भी मिटाना है, तो इस पैरामीटर कोrecursiveपर सेट करें.रीयलटाइम डेटाबेस इंस्टेंस:
आपको किस रीयलटाइम डेटाबेस इंस्टेंस से उपयोगकर्ता का डेटा मिटाना है?
रीयलटाइम डेटाबेस की जगह:
(यह सिर्फ़ तभी लागू होगा, जब आपने
Realtime Database instanceपैरामीटर की जानकारी दी हो.) आपको किस रीयलटाइम डेटाबेस की जगह से उपयोगकर्ता का डेटा मिटाना है?रीयलटाइम डेटाबेस के पाथ:
आपके रीयलटाइम डेटाबेस इंस्टेंस में कौनसे पाथ उपयोगकर्ता के डेटा को शामिल करते हैं? अगर आप रीयलटाइम डेटाबेस का इस्तेमाल नहीं करते हैं, तो खाली छोड़ें. कॉमा से अलग करके पूरा पाथ डालें. मिटाए गए उपयोगकर्ता का User-ID दिखाने के लिए,
{UID}का इस्तेमाल किया जा सकता है. उदाहरण के लिए:users/{UID},admins/{UID}.Cloud Storage के पाथ:
आपको Google Cloud Storage में उपयोगकर्ता का डेटा कहां सेव करना है? अगर आप Cloud Storage का इस्तेमाल नहीं करते हैं, तो खाली छोड़ें. अपने स्टोरेज बकेट में कॉमा से अलग करके, फ़ाइलों या डायरेक्ट्री का पूरा पाथ डालें. मिटाए गए उपयोगकर्ता का User-ID दिखाने के लिए,
{UID}का इस्तेमाल करें. साथ ही, अपना डिफ़ॉल्ट स्टोरेज बकेट दिखाने के लिए,{DEFAULT}का इस्तेमाल करें.उदाहरणों की एक सीरीज़ यहां दी गई है:
- अपने डिफ़ॉल्ट बकेट में मौजूद सभी फ़ाइलें मिटाने के लिए,
{UID}-pic.pngफ़ाइल नेमिंग स्कीम का इस्तेमाल करें. इसके लिए,{DEFAULT}/{UID}-pic.pngडालें. - `
my-app-logs` नाम के किसी दूसरे बकेट में मौजूद सभी फ़ाइलें मिटाने के लिए, `{UID}-logs.txt` फ़ाइल नेमिंग स्कीम का इस्तेमाल करें. इसके लिए, `{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt` डालें. - User-ID लेबल वाली डायरेक्ट्री और उसकी सभी फ़ाइलें (जैसे,
media/{UID}) मिटाने के लिए, भी{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}डालें.
- अपने डिफ़ॉल्ट बकेट में मौजूद सभी फ़ाइलें मिटाने के लिए,
मिटाने के लिए डेटा ढूंढना
यह एक्सटेंशन, मिटाने के लिए डेटा ढूंढने के लिए कुछ तरीकों का इस्तेमाल करता है. डेटा मिटाने के लिए, इन तरीकों को एक्सटेंशन के लिए साफ़ तौर पर कॉन्फ़िगर करना ज़रूरी है. एक्सटेंशन सिर्फ़ उस डेटा को मिटाएगा जिसे साफ़ तौर पर, दिए गए तरीकों के आधार पर मिटाने के लिए कॉन्फ़िगर किया गया है.
हर सेवा के बीच के इन व्यवहार के अंतरों के बारे में जानें:
- Cloud Firestore: डिफ़ॉल्ट तौर पर, किसी दस्तावेज़ को शैलो तरीके से मिटाया जाता है. इसका मतलब है कि सब-कलेक्शन नहीं मिटाए जाएंगे. किसी दस्तावेज़ के सभी सब-कलेक्शन को बार-बार मिटाने के लिए, "Cloud Firestore का मिटाने वाला मोड" विकल्प को "बार-बार होने वाला" पर सेट करें.
- रीयलटाइम डेटाबेस: बताए गए नोड पर मौजूद सभी डेटा मिटा दिए जाएंगे.
- Storage: अगर किसी डायरेक्ट्री का पाथ बताया जाता है, तो सभी फ़ाइलें और सब-डायरेक्ट्री मिटा दी जाएंगी.
पाथ के हिसाब से
Cloud Firestore, रीयलटाइम डेटाबेस, और Cloud Storage के पाथ कॉन्फ़िगर करते समय, पाथ में UID वैरिएबल तय किया जा सकता है. इसे पुष्टि किए गए उपयोगकर्ता के UID से बदल दिया जाएगा. जब किसी उपयोगकर्ता को मिटाया जाता है, तो एक्सटेंशन दिए गए पाथ पर उस UID से जुड़ा सभी डेटा मिटा देगा. उदाहरण के लिए:
- Cloud Firestore पाथ:
users/{UID},admins/{UID} - रीयलटाइम डेटाबेस पाथ:
likes/{UID} - Cloud Storage पाथ:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
अपने-आप डेटा ढूंढने की सुविधा (Cloud Firestore)
Firestore के दस्तावेज़ों को अपने-आप ढूंढकर मिटाने के लिए, "अपने-आप डेटा ढूंढने की सुविधा चालू करें" कॉन्फ़िगरेशन पैरामीटर को "हां" पर सेट करें.
अपने-आप डेटा ढूंढने की सुविधा, डेटाबेस को अपने-आप ट्रैवर्स करके, उन कलेक्शन और दस्तावेज़ों को ढूंढती है जिन्हें आपके कॉन्फ़िगरेशन के मुताबिक मिटाया जाना चाहिए. एक्सटेंशन, इन कलेक्शन और दस्तावेज़ों की पहचान इस तरीके से करता है:
- सबसे पहले, एक्सटेंशन डेटाबेस में मौजूद सभी रूट कलेक्शन ढूंढता है. अगर किसी कलेक्शन का आईडी, उपयोगकर्ता के UID से मेल खाता है, तो पूरा कलेक्शन मिटा दिया जाता है. मिटाने की कार्रवाई, "Cloud Firestore का मिटाने वाला मोड" के लिए एक्सटेंशन के कॉन्फ़िगरेशन के आधार पर, बार-बार होने वाली या शैलो हो सकती है.
- दूसरे, अगर कलेक्शन का आईडी मेल नहीं खाता है, तो एक्सटेंशन किसी दस्तावेज़ की पहचान करके उसे मिटाने की कोशिश करेगा. ऐसा तब होगा, जब उसका दस्तावेज़ आईडी, उपयोगकर्ता के UID से मेल खाता हो.
- आखिर में, हर दस्तावेज़ के लिए: a. अगर मौजूदा खोज की गहराई (नीचे देखें) कॉन्फ़िगर की गई खोज की गहराई से कम या उसके बराबर है, तो मौजूदा दस्तावेज़ के सभी सब-कलेक्शन के लिए प्रोसेस दोहराई जाएगी. b. अगर खोज के फ़ील्ड कॉन्फ़िगर किए गए हैं, तो एक्सटेंशन यह देखेगा कि दिए गए फ़ील्ड, उपयोगकर्ता के UID से मेल खाते हैं या नहीं. अगर कोई मेल मिलता है, तो दस्तावेज़ मिटा दिया जाएगा.
खोज की गहराई
एक्सटेंशन, खोज की गहराई की वैल्यू को कॉन्फ़िगर करने की सुविधा देता है. इसकी डिफ़ॉल्ट वैल्यू 3 होती है. ट्रैवर्सल सिर्फ़ तब किया जाएगा, जब मौजूदा खोज की गहराई, कॉन्फ़िगर की गई खोज की गहराई से कम या उसके बराबर होगी. मौजूदा खोज गहराई, मौजूदा कलेक्शन या दस्तावेज़ों के पैरंट कलेक्शन की गहराई पर आधारित होती है. उदाहरण के लिए,
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
यह एक्सटेंशन, कलेक्शन या मैप में सेव किए गए UID को अपने-आप नहीं मिटाएगा. साथ ही, यह ऊपर बताई गई गहराई से ज़्यादा नेस्ट किए गए सब-कलेक्शन में सेव किए गए, User-ID से जुड़े डेटा को नहीं ढूंढेगा.