باستخدام ملحق حذف بيانات المستخدم

يتيح لك ملحق حذف بيانات المستخدم ( delete-user-data ) حذف بيانات المستخدم عند حذف المستخدم من مشروع Firebase الخاص بك. يمكنك تكوين هذا الامتداد لحذف بيانات المستخدم من أي مما يلي أو جميعه: Cloud Firestore، أو Realtime Database، أو Cloud Storage. يتم ربط كل مشغل للامتداد لحذف البيانات UserId المستخدم الخاص بالمستخدم.

يعد هذا الامتداد مفيدًا لاحترام خصوصية المستخدم والوفاء بمتطلبات الامتثال. ومع ذلك، فإن استخدام هذا الامتداد لا يضمن الامتثال للوائح الحكومية والصناعية.

المتطلبات الأساسية

  • يجب عليك استخدام مصادقة Firebase لإدارة المستخدمين.

  • يقوم هذا الملحق بحذف البيانات من Cloud Firestore و Realtime Database و Cloud Storage فقط. إذا قمت بتخزين بيانات المستخدم في مكان آخر، فيجب عليك أيضًا حذف بيانات المستخدم من تلك المصادر عند حذف المستخدمين.

قم بتثبيت الامتداد

لتثبيت الملحق، اتبع الخطوات الموجودة في صفحة تثبيت ملحق Firebase . باختصار، قم بأحد الإجراءات التالية:

أثناء تثبيت الامتداد، سيُطلب منك تحديد عدد من معلمات التكوين:

  • موقع وظائف السحابة:

    حدد الموقع الذي تريد نشر الوظائف التي تم إنشاؤها لهذا الملحق. عادةً ما تريد موقعًا قريبًا من قاعدة البيانات الخاصة بك. للمساعدة في اختيار الموقع، راجع دليل اختيار الموقع .

  • مسارات Cloud Firestore:

    ما هي المسارات الموجودة في مثيل Cloud Firestore الخاص بك والتي تحتوي على بيانات المستخدم؟ اتركه فارغًا إذا كنت لا تستخدم Cloud Firestore. أدخل المسارات الكاملة، مفصولة بفواصل. يمكنك تمثيل معرف المستخدم للمستخدم المحذوف بـ {UID} . على سبيل المثال، إذا كان لديك users admins في المجموعات، وكل مجموعة تحتوي على مستندات بمعرف المستخدم كمعرفات مستندات، فيمكنك إدخال users/{UID},admins/{UID} .

  • وضع الحذف Cloud Firestore:

    (ينطبق فقط إذا كنت تستخدم معلمة Cloud Firestore paths .) كيف تريد حذف مستندات Cloud Firestore؟ لحذف المستندات الموجودة في المجموعات الفرعية أيضًا، قم بتعيين هذه المعلمة على recursive .

  • مثيل قاعدة البيانات في الوقت الحقيقي:

    من أي مثيل لقاعدة بيانات Realtime تريد حذف بيانات المستخدم؟

  • موقع قاعدة البيانات في الوقت الحقيقي:

    (لا ينطبق إلا إذا قمت بتوفير معلمة Realtime Database instance .) من أي موقع قاعدة بيانات Realtime تريد حذف بيانات المستخدم؟

  • مسارات قاعدة البيانات في الوقت الحقيقي:

    ما هي المسارات الموجودة في مثيل قاعدة بيانات Realtime التي تحتوي على بيانات المستخدم؟ اتركه فارغًا إذا كنت لا تستخدم قاعدة بيانات Realtime. أدخل المسارات الكاملة، مفصولة بفواصل. يمكنك تمثيل معرف المستخدم للمستخدم المحذوف بـ {UID} . على سبيل المثال: users/{UID},admins/{UID} .

  • مسارات التخزين السحابي:

    أين تقوم بتخزين بيانات المستخدم في Google Cloud Storage؟ اتركه فارغًا إذا كنت لا تستخدم Cloud Storage. أدخل المسارات الكاملة للملفات أو الدلائل في مجموعات التخزين الخاصة بك، مفصولة بفواصل. استخدم {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 .
    • لحذف دليل يحمل علامة معرف المستخدم وجميع ملفاته (مثل media/{UID} )، أدخل {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID} .

اكتشاف البيانات للحذف

هناك بعض الآليات التي يستخدمها هذا الامتداد لاكتشاف البيانات المراد حذفها. يجب تكوين هذه الآليات بشكل صريح حتى يتمكن الامتداد من حذف البيانات. لن يحذف الامتداد سوى البيانات التي تم تكوينها بشكل صريح للحذف بناءً على الآليات المتوفرة.

كن على دراية بالاختلافات السلوكية التالية بين كل خدمة:

  • Cloud Firestore: السلوك الافتراضي هو حذف مستند بشكل سطحي (لن يتم حذف المجموعات الفرعية). لحذف جميع المجموعات الفرعية للمستند بشكل متكرر، قم بتعيين خيار "وضع الحذف Cloud Firestore" على "Recursive".
  • قاعدة بيانات الوقت الحقيقي: سيتم حذف جميع البيانات الموجودة في العقدة المحددة.
  • التخزين: إذا تم تحديد مسار الدليل، فسيتم حذف جميع الملفات والأدلة الفرعية.

بالمسار

عند تكوين مسارات Cloud Firestore وRealtime Database وCloud Storage، من الممكن تحديد متغير UID في المسارات التي سيتم استبدالها بمعرف UID الخاص بالمستخدم الذي تمت مصادقته. عندما يتم حذف مستخدم، سيقوم الامتداد بحذف جميع البيانات الموجودة على UID هذا في المسارات المحددة، على سبيل المثال:

  • مسار (مسارات) Cloud Firestore: users/{UID},admins/{UID}
  • مسار (مسارات) قاعدة البيانات في الوقت الفعلي: likes/{UID}
  • مسار (مسارات) التخزين السحابي: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

الاكتشاف التلقائي (Cloud Firestore)

لتمكين الامتداد من اكتشاف مستندات Firestore تلقائيًا لحذفها، قم بتعيين معلمة التكوين "تمكين الاكتشاف التلقائي" على "نعم".

يعمل الاكتشاف التلقائي عن طريق اجتياز قاعدة البيانات تلقائيًا للعثور على المجموعات والمستندات التي يجب حذفها وفقًا للتكوين الخاص بك. يحدد الامتداد تلك المجموعات والوثائق بالمنهجية التالية:

  1. أولاً، يقوم الامتداد بالبحث عن كافة المجموعات الجذرية في قاعدة البيانات. إذا تطابق معرف المجموعة مع معرف المستخدم الفريد، فسيتم حذف المجموعة بأكملها (يكون الحذف إما متكررًا أو سطحيًا، اعتمادًا على تكوين الامتدادات لـ "وضع الحذف Cloud Firestore").
  2. ثانيًا، إذا كان معرف المجموعة غير متطابق، فسيحاول الامتداد التعرف على مستند وحذفه إذا كان معرف المستند الخاص به يتطابق مع معرف المستخدم الفريد.
  3. وأخيرا، لكل وثيقة: أ. إذا كان عمق البحث الحالي (انظر أدناه) أقل من أو يساوي عمق البحث المكون، فسيتم تكرار العملية لجميع المجموعات الفرعية للمستند الحالي. ب. إذا تم تكوين حقول البحث، فسيقوم الامتداد بالتحقق مما إذا كانت الحقول المقدمة تتطابق مع UID الخاص بالمستخدم. إذا تم العثور على تطابق، فسيتم حذف المستند.

عمق البحث

يوفر الامتداد قيمة عمق بحث قابلة للتكوين (الافتراضي هو 3). لن يتم تنفيذ الاجتياز إلا إذا كان عمق البحث الحالي أقل من أو يساوي عمق البحث الذي تم تكوينه. يعتمد عمق البحث الحالي على عمق المجموعة الحالية أو المجموعة الأصلية للوثائق، على سبيل المثال

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

لن يقوم هذا الامتداد تلقائيًا بحذف معرفات UID المخزنة في المصفوفات أو الخرائط، ولن يبحث عن البيانات التي تم مفتاحها بواسطة معرف المستخدم المخزنة في مجموعات فرعية متداخلة بعمق تتجاوز العمق المحدد أعلاه.