استخدام الإضافة "حذف بيانات المستخدمين"

تتيح لك إضافة Delete User Data (delete-user-data) حذف بيانات المستخدم عند حذفه من مشروعك على Firebase. يمكنك ضبط هذه الإضافة لحذف بيانات المستخدمين من أيّ من الخدمات التالية أو جميعها: Cloud Firestore أو Realtime Database أو Cloud Storage. يتم ربط كل عملية تشغيل للإضافة لحذف البيانات بمعرّف UserId الخاص بالمستخدم.

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

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

  • يجب استخدام Firebase Authentication لإدارة المستخدمين.

  • لا تحذف هذه الإضافة البيانات إلا من 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 Database:

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

  • موقع Realtime Database:

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

  • مسارات Realtime Database:

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

  • مسارات Cloud Storage:

    أين يتم تخزين بيانات المستخدمين في Google Cloud Storage؟ اترك هذا الحقل فارغًا إذا كنت لا تستخدم Cloud Storage. أدخِل المسارات الكاملة للملفات أو الدلائل في حِزم 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" على "متكرّر".
  • Realtime Database: سيتم حذف جميع البيانات في العقدة المحدّدة.
  • مساحة التخزين: في حال تحديد مسار دليل، سيتم حذف جميع الملفات والمجلدات الفرعية.

حسب المسار

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

  • مسارات Cloud Firestore: users/{UID},admins/{UID}
  • مسارات Realtime Database: likes/{UID}
  • مسارات Cloud Storage: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

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

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

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

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

متوسط عدد الصفحات المشاهَدة بعد البحث

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

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

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