با استفاده از پسوند Delete User Data

افزونه‌ی حذف داده‌های کاربر ( delete-user-data ) به شما امکان می‌دهد داده‌های کاربر را هنگام حذف کاربر از پروژه‌ی Firebase خود حذف کنید. می‌توانید این افزونه را برای حذف داده‌های کاربر از هر یک یا همه موارد زیر پیکربندی کنید: Cloud Firestore، Realtime Database یا Cloud Storage. هر فعال‌سازی افزونه برای حذف داده‌ها با UserId کاربر مرتبط است.

این افزونه برای احترام به حریم خصوصی کاربر و برآورده کردن الزامات انطباق مفید است. با این حال، استفاده از این افزونه تضمینی برای انطباق با مقررات دولتی و صنعتی نیست.

پیش‌نیازها

  • شما باید از احراز هویت فایربیس برای مدیریت کاربران خود استفاده کنید.

  • این افزونه فقط داده‌ها را از Cloud Firestore ، Realtime Database و Cloud Storage حذف می‌کند. اگر داده‌های کاربر را در جای دیگری ذخیره می‌کنید، هنگام حذف کاربران، باید داده‌های کاربر را از آن منابع نیز حذف کنید.

افزونه را نصب کنید

برای نصب افزونه، مراحل موجود در صفحه نصب افزونه فایربیس را دنبال کنید. به طور خلاصه، یکی از موارد زیر را انجام دهید:

در حین نصب افزونه، از شما خواسته می‌شود تعدادی پارامتر پیکربندی را مشخص کنید:

  • مکان توابع ابری:

    مکانی را که می‌خواهید توابع ایجاد شده برای این افزونه در آن مستقر شوند، انتخاب کنید. معمولاً مکانی نزدیک به پایگاه داده خود می‌خواهید. برای کمک به انتخاب مکان، به راهنمای انتخاب مکان مراجعه کنید.

  • مسیرهای کلود فایراستور:

    کدام مسیرها در نمونه 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} .

  • مسیرهای ذخیره‌سازی ابری:

    داده‌های کاربر را در کجای فضای ذخیره‌سازی ابری گوگل ذخیره می‌کنید؟ اگر از فضای ذخیره‌سازی ابری استفاده نمی‌کنید، خالی بگذارید. مسیر کامل فایل‌ها یا دایرکتوری‌ها را در سطل‌های ذخیره‌سازی خود وارد کنید، آنها را با کاما از هم جدا کنید. از {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» را روی «بازگشتی» تنظیم کنید.
  • پایگاه داده بلادرنگ: تمام داده‌های موجود در گره مشخص شده حذف خواهند شد.
  • ذخیره‌سازی: اگر مسیر دایرکتوری مشخص شود، تمام فایل‌ها و زیر دایرکتوری‌ها حذف خواهند شد.

بر اساس مسیر

هنگام پیکربندی مسیرهای 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. ابتدا، افزونه تمام مجموعه‌های ریشه را در پایگاه داده پیدا می‌کند. اگر شناسه یک مجموعه با شناسه کاربر (UID) مطابقت داشته باشد، کل مجموعه حذف می‌شود (حذف یا بازگشتی است یا سطحی، بسته به پیکربندی افزونه‌ها برای "حالت حذف Cloud Firestore").
  2. ثانیاً، اگر شناسه مجموعه مطابقت نداشته باشد، افزونه تلاش می‌کند سندی را شناسایی و حذف کند، اگر شناسه سند آن با شناسه کاربر مطابقت داشته باشد.
  3. در نهایت، برای هر سند: الف. اگر عمق جستجوی فعلی (به زیر مراجعه کنید) کمتر یا مساوی عمق جستجوی پیکربندی شده باشد، این فرآیند برای همه زیرمجموع‌های سند فعلی تکرار خواهد شد. ب. اگر فیلدهای جستجو پیکربندی شده باشند، افزونه بررسی می‌کند که آیا فیلدهای ارائه شده با UID کاربر مطابقت دارند یا خیر. در صورت یافتن تطابق، سند حذف می‌شود.

عمق جستجو

این افزونه یک مقدار عمق جستجوی قابل تنظیم (به طور پیش‌فرض ۳) ارائه می‌دهد. پیمایش فقط در صورتی اجرا می‌شود که عمق جستجوی فعلی کمتر یا مساوی عمق جستجوی پیکربندی شده باشد. عمق جستجوی فعلی بر اساس عمق مجموعه فعلی یا مجموعه والد اسناد است، به عنوان مثال

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

این افزونه به طور خودکار شناسه‌های کاربری ذخیره شده در آرایه‌ها یا نقشه‌ها را حذف نمی‌کند و داده‌های کلیدگذاری شده توسط شناسه کاربری ذخیره شده در زیرمجموعه‌های تو در تو و عمیق‌تر از عمق مشخص شده در بالا را جستجو نمی‌کند.