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

התוסף 'מחיקת נתוני משתמשים' (delete-user-data) מאפשר למחוק נתונים של משתמש כאשר הוא נמחק מפרויקט Firebase. אפשר להגדיר את התוסף הזה כך שימחק נתוני משתמשים מאחת מהאפשרויות הבאות: Cloud Firestore, מסד נתונים בזמן אמת או 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 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.
    • כדי גם למחוק ספרייה שמסומנת בתווית User ID ואת כל הקבצים שלה (כמו media/{UID}), מזינים {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}.

איתור נתונים למחיקה

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

שימו לב להבדלים הבאים בהתנהגות בין כל שירות:

  • Cloud Firestore: ברירת המחדל היא מחיקה חלקית של מסמך (אוספים משניים לא יימחקו). כדי למחוק באופן רקורסיבי את כל אוספי המשנה של מסמך, מגדירים את 'מצב מחיקה ב-Cloud Firestore' האפשרות 'רקורסיבי'.
  • מסד נתונים בזמן אמת: כל הנתונים בצומת שצוין יימחקו.
  • אחסון: אם צוין נתיב של ספרייה, כל הקבצים וספריות המשנה יימחקו.

לפי נתיב

כשמגדירים את Cloud Firestore, מסד הנתונים בזמן אמת בנתיבים של Cloud Storage, ניתן להגדיר משתנה UID בנתיבים שיוחלפו ב-UID של המשתמש המאומת. כשמוחקים משתמש, התוסף ימחק את כל הנתונים שממוקדים ב-UID הזה בנתיבים הנתונים, לדוגמה:

  • נתיבים ב-Cloud Firestore: users/{UID},admins/{UID}
  • נתיבים של מסד נתונים בזמן אמת: likes/{UID}
  • נתיבים של Cloud Storage: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

Auto Discovery (Cloud Firestore)

כדי לאפשר לתוסף לזהות באופן אוטומטי מסמכים ב-Firestore למחיקה, מגדירים את הפרמטר 'הפעלת זיהוי אוטומטי' לערך 'כן'.

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

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

עומק החיפוש

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

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

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