שימוש בתוסף 'מחיקת נתוני משתמשים'

התוסף 'מחיקת נתוני משתמשים' (delete-user-data) מאפשר למחוק את הנתונים של משתמש כשמוחקים אותו מפרויקט Firebase. אפשר להגדיר את התוסף הזה למחיקת נתוני משתמשים מכל אחד מהשירותים הבאים או מכל השלושה: Cloud Firestore,‏ Realtime Database או Cloud Storage. כל טריגר של התוסף למחיקת נתונים מוגדר לפי המפתח UserId של המשתמש.

התוסף הזה שימושי לשמירה על פרטיות המשתמשים ולעמידה בדרישות התאימות. עם זאת, השימוש בתוסף הזה לא מבטיח עמידה בתקנות הממשלתיות ובתקנות התחום.

דרישות מוקדמות

  • כדי לנהל את המשתמשים, צריך להשתמש באימות ב-Firebase.

  • התוסף הזה מוחק נתונים רק מ-Cloud Firestore, מ-Realtime Database ומ-Cloud Storage. אם אתם שומרים נתוני משתמשים במקום אחר, עליכם למחוק את נתוני המשתמשים גם מהמקורות האלה כשאתם מוחקים משתמשים.

התקנת התוסף

כדי להתקין את התוסף, פועלים לפי השלבים שמפורטים בדף התקנת התוסף של Firebase. לסיכום, מבצעים אחת מהפעולות הבאות:

במהלך ההתקנה של התוסף, תתבקשו לציין מספר פרמטרים של הגדרות:

  • מיקום Cloud Functions:

    בוחרים את המיקום שבו רוצים לפרוס את הפונקציות שנוצרו עבור התוסף הזה. בדרך כלל כדאי לבחור מיקום קרוב למסד הנתונים. כדי לקבל עזרה בבחירת מיקום, אפשר לעיין במדריך לבחירת מיקום.

  • נתיבי 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:

    (האפשרות הזו רלוונטית רק אם סיפקתם את הפרמטר Realtime Database instance). מאיזו מיקום ב-Realtime Database רוצים למחוק את נתוני המשתמש?

  • נתיבי מסד נתונים בזמן אמת:

    אילו נתיבים במכונה של Realtime Database מכילים נתוני משתמשים? משאירים את השדה ריק אם לא משתמשים ב-Realtime Database. מזינים את הנתיבים המלאים, מופרדים בפסיקים. אפשר לייצג את מזהה המשתמש של המשתמש שנמחק באמצעות {UID}. לדוגמה: users/{UID},admins/{UID}.

  • נתיבי Cloud Storage:

    איפה אתם מאחסנים את נתוני המשתמשים ב-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' ל-'רקורסיבי'.
  • Realtime Database: כל הנתונים בצומת שצוין יימחקו.
  • אחסון: אם יצוין נתיב ספרייה, כל הקבצים והספריות המשניות יימחקו.

לפי נתיב

כשמגדירים את הנתיבים של Cloud Firestore, ‏ Realtime Database ו-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 למחיקה, מגדירים את הפרמטר 'הפעלת זיהוי אוטומטי' לערך 'כן'.

תהליך הגילוי האוטומטי מאפשר לסרוק את מסד הנתונים באופן אוטומטי כדי למצוא אוספים ומסמכים שצריך למחוק בהתאם להגדרות שלכם. התוסף מזהה את האוספים והמסמכים האלה באמצעות השיטה הבאה:

  1. קודם כל, התוסף מוצא את כל אוספי הבסיס במסד הנתונים. אם המזהה של האוסף תואם למזהה המשתמש (UID), האוסף כולו נמחק (המחיקה היא רסיקטיבית או רדודה, בהתאם להגדרה של התוספים ל'מצב המחיקה של Cloud Firestore').
  2. שנית, אם מזהה האוסף לא תואם, התוסף ינסה לזהות ולמחוק מסמך אם מזהה המסמך שלו תואם למזהה המשתמש (UID).
  3. לסיום, לכל מסמך: א. אם עומק החיפוש הנוכחי (ראו בהמשך) קטן או שווה לעומק החיפוש שהוגדר, התהליך יחזור על עצמו בכל אוספי המשנה של המסמך הנוכחי. ב. אם הגדרתם שדות חיפוש, התוסף יבדוק אם השדות שצוינו תואמים למזהה המשתמש (UID). אם תתגלה התאמה, המסמך יימחק.

עומק החיפוש

התוסף מציע ערך של עומק החיפוש שניתן להגדרה (ברירת המחדל היא 3). המערכת תבצע את הסריקה רק אם עומק החיפוש הנוכחי קטן או שווה לעומק החיפוש שהוגדר. עומק החיפוש הנוכחי מבוסס על עומק האוסף הנוכחי או על אוסף ההורים של המסמכים, לדוגמה

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

התוסף הזה לא ימחק באופן אוטומטי מזהי משתמשים ששמורים במערכים או במפות, ולא יחפש נתונים שמקושרים למפתחות של מזהי משתמשים ששמורים באוספים משניים שמקובצים לעומק מעבר לעומק שצוין למעלה.