התוסף 'מחיקת נתוני משתמשים' (delete-user-data
) מאפשר למחוק את הנתונים של משתמש כשמוחקים אותו מפרויקט Firebase. אפשר להגדיר את התוסף הזה למחיקת נתוני משתמשים מכל אחד מהשירותים הבאים או מכל השלושה: Cloud Firestore, Realtime Database או Cloud Storage. כל טריגר של התוסף למחיקת נתונים מוגדר לפי המפתח UserId
של המשתמש.
התוסף הזה שימושי לשמירה על פרטיות המשתמשים ולעמידה בדרישות התאימות. עם זאת, השימוש בתוסף הזה לא מבטיח עמידה בתקנות הממשלתיות ובתקנות התחום.
דרישות מוקדמות
כדי לנהל את המשתמשים, צריך להשתמש באימות ב-Firebase.
התוסף הזה מוחקת נתונים רק מ-Cloud Firestore, מ-מסד נתונים בזמן אמת ומ-Cloud Storage. אם אתם מאחסנים נתוני משתמשים במקום אחר, עליכם למחוק גם נתוני משתמשים מהמקורות האלה כשאתם מוחקים משתמשים.
התקנת התוסף
כדי להתקין את התוסף, פועלים לפי השלבים שמפורטים בדף התקנת התוסף של Firebase. לסיכום, יש לבצע אחת מהפעולות הבאות:
מסוף Firebase: לוחצים על הלחצן הבא:
CLI: מריצים את הפקודה הבאה:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
במהלך ההתקנה של התוסף, תתבקשו לציין מספר פרמטרים של הגדרות:
המיקום של 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 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 למחיקה, מגדירים את הפרמטר 'הפעלת זיהוי אוטומטי' לערך 'כן'.
תהליך הגילוי האוטומטי מאפשר לסרוק את מסד הנתונים באופן אוטומטי כדי למצוא אוספים ומסמכים שצריך למחוק בהתאם להגדרות שלכם. התוסף מזהה את האוספים והמסמכים האלה באמצעות השיטה הבאה:
- ראשית, התוסף מוצא את כל האוספים של השורש במסד הנתונים. אם המזהה של האוסף תואם למזהה המשתמש (UID), האוסף כולו נמחק (המחיקה היא רסיקטיבית או רדודה, בהתאם להגדרה של התוספים ל'מצב המחיקה ב-Cloud Firestore').
- שנית, אם מזהה האוסף לא תואם, התוסף ינסה לזהות ולמחוק מסמך אם מזהה המסמך שלו תואם למזהה המשתמש (UID).
- לבסוף, לכל מסמך: א. אם עומק החיפוש הנוכחי (ראו בהמשך) קטן או שווה לעומק החיפוש שהוגדר, התהליך יחזור על עצמו בכל אוספי המשנה של המסמך הנוכחי. ב. אם הגדרתם שדות חיפוש, התוסף יבדוק אם השדות שצוינו תואמים למזהה המשתמש (UID). אם תתגלה התאמה, המסמך יימחק.
עומק החיפוש
התוסף מציע ערך של עומק החיפוש שניתן להגדרה (ברירת המחדל היא 3). המערכת תבצע את הסריקה רק אם עומק החיפוש הנוכחי קטן מעומק החיפוש שהוגדר או שווה לו. עומק החיפוש הנוכחי מבוסס על עומק האוסף הנוכחי או על אוסף ההורים של המסמכים, לדוגמה
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
התוסף הזה לא ימחק באופן אוטומטי מזהי UID שמאוחסנים במערכים או במפות, ולא יחפש נתונים שפותחו לפי מזהה משתמש השמורים באוספי משנה בתוך אוספי משנה עמוקים מעבר לרוחב שצוין למעלה.