Kullanıcı Verilerini Sil uzantısı (delete-user-data
), Firebase projenizden silinen bir kullanıcının verilerini silmenize olanak tanır. Bu uzantıyı Cloud Firestore, Realtime Database veya Cloud Storage'ın tümünden ya da tümünden kullanıcı verilerini silecek şekilde yapılandırabilirsiniz. Verileri silmek için uzantının her tetikleyicisi, kullanıcının UserId
ile ilişkilendirilir.
Bu uzantı, kullanıcı gizliliğine saygı göstermek ve uygunluk koşullarını yerine getirmek için kullanışlıdır. Ancak bu uzantının kullanılması, resmi ve sektördeki düzenlemelere uygunluğu garanti etmez.
Ön koşullar
Kullanıcılarınızı yönetmek için Firebase Authentication'i kullanmanız gerekir.
Bu uzantı yalnızca Cloud Firestore, Realtime Database ve Cloud Storage'daki verileri siler. Kullanıcı verilerini başka bir yerde saklıyorsunuzdur. Kullanıcıları sildiğinizde bu kaynaklardaki kullanıcı verilerini de silmeniz gerekir.
Uzantıyı yükleme
Uzantıyı yüklemek için Firebase Uzantısını Yükleme sayfasındaki adımları uygulayın. Özet olarak, aşağıdakilerden birini yapın:
Firebase konsolu: Aşağıdaki düğmeyi tıklayın:
KSA: Aşağıdaki komutu çalıştırın:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
Uzantının yüklenmesi sırasında bir dizi yapılandırma parametresi belirtmeniz istenir:
Cloud Functions konumu:
Bu uzantı için oluşturulan işlevleri dağıtmak istediğiniz konumu seçin. Genellikle veritabanınıza yakın bir konum istersiniz. Konum seçmeyle ilgili yardım için konum seçme kılavuzuna bakın.
Cloud Firestore yolları:
Cloud Firestore örneğinizdeki hangi yollar kullanıcı verilerini içeriyor? Cloud Firestore kullanmıyorsanız boş bırakın. Tam yolları virgülle ayırarak girin. Silinen kullanıcının kullanıcı kimliğini
{UID}
ile temsil edebilirsiniz. Örneğin,users
veadmins
koleksiyonlarınız varsa ve her koleksiyonda belge kimlikleri olarak User-ID içeren dokümanlar varsausers/{UID},admins/{UID}
değerini girebilirsiniz.Cloud Firestore silme modu:
(Yalnızca
Cloud Firestore paths
parametresini kullanıyorsanız geçerlidir.) Cloud Firestore belgelerini nasıl silmek istiyorsunuz? Alt koleksiyonlardaki dokümanları da silmek için bu parametreyirecursive
olarak ayarlayın.Realtime Database örneği:
Kullanıcı verilerini hangi Realtime Database örneğinden silmek istiyorsunuz?
Gerçek Zamanlı Veritabanı konumu:
(Yalnızca
Realtime Database instance
parametresini sağladıysanız geçerlidir.) Kullanıcı verilerini hangi Realtime Database konumundan silmek istiyorsunuz?Gerçek Zamanlı Veritabanı yolları:
Realtime Database örneğinizdeki hangi yollar kullanıcı verilerini içerir? Realtime Database kullanmıyorsanız bu alanı boş bırakın. Tam yolları virgülle ayırarak girin. Silinen kullanıcının kullanıcı kimliğini
{UID}
ile temsil edebilirsiniz. Örneğin:users/{UID},admins/{UID}
.Cloud Storage yolları:
Kullanıcı verilerini Google Cloud Storage'da nerede depoluyorsunuz? Cloud Storage kullanmıyorsanız bu alanı boş bırakın. Storage paketlerinizdeki dosyaların veya dizinlerin tam yollarını virgülle ayırarak girin. Silinen kullanıcının kullanıcı kimliğini temsil etmek için
{UID}
, varsayılan depolama paketinizi temsil etmek için{DEFAULT}
kullanın.Aşağıda bir dizi örnek verilmiştir:
- Varsayılan paketinizdeki
{UID}-pic.png
dosya adlandırma şemasına sahip tüm dosyaları silmek için{DEFAULT}/{UID}-pic.png
yazın. my-app-logs
adlı başka bir paketteki ve{UID}-logs.txt
dosya adlandırma şemasına sahip tüm dosyaları da silmek için{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
değerini girin.- User ID etiketli bir dizini ve tüm dosyalarını (
media/{UID}
gibi) ayrıca silmek için{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
değerini girin.
- Varsayılan paketinizdeki
Silinecek verileri keşfetme
Bu uzantı, silinecek verileri bulmak için birkaç mekanizma kullanır. Uzantının veri silmesi için bu mekanizmaların açıkça yapılandırılması gerekir. Uzantı yalnızca sağlanan mekanizmalara göre silinmek üzere açıkça yapılandırılmış verileri siler.
Her hizmet arasındaki aşağıdaki davranış farklılıklarını göz önünde bulundurun:
- Cloud Firestore: Varsayılan davranış, bir dokümanı yüzeysel olarak silmektir (alt koleksiyonlar silinmez). Bir belgenin tüm alt koleksiyonlarını yinelemeli olarak silmek için "Cloud Firestore silme modu" seçeneğini "Yinelemeli" olarak ayarlayın.
- Gerçek Zamanlı Veritabanı: Belirtilen düğümdeki tüm veriler silinir.
- Depolama alanı: Bir dizin yolu belirtilirse tüm dosyalar ve alt dizinler silinir.
Yola göre
Cloud Firestore, Realtime Database ve Cloud Storage yollarını yapılandırırken yollarda, kimliği doğrulanmış kullanıcının UID'siyle değiştirilecek bir UID
değişkeni tanımlayabilirsiniz. Bir kullanıcı silindiğinde uzantı, belirtilen yollarda bu UID ile anahtarlanmış tüm verileri siler. Örneğin:
- Cloud Firestore yolları:
users/{UID},admins/{UID}
- Realtime Database yolları:
likes/{UID}
- Cloud Storage yolları:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
Otomatik Keşif (Cloud Firestore)
Uzantı, silinecek Firestore belgelerini otomatik olarak keşfetsin diye "Otomatik keşfi etkinleştir" yapılandırma parametresini "Evet" olarak ayarlayın.
Otomatik keşif özelliği, yapılandırmanıza göre silinmesi gereken koleksiyonları ve dokümanları bulmak için veritabanında otomatik olarak gezinerek çalışır. Uzantı, bu koleksiyonları ve dokümanları aşağıdaki metodolojiyle tanımlar:
- Uzatma ilk olarak veritabanındaki tüm kök koleksiyonları bulur. Bir koleksiyonun kimliği, kullanıcının UID'siyle eşleşirse koleksiyonun tamamı silinir (silme işlemi, uzantıların "Cloud Firestore silme modu" yapılandırmasına bağlı olarak yinelemeli veya yüzeyseldir).
- İkinci olarak, koleksiyon kimliği eşleşmezse uzantı, doküman kimliği kullanıcının UID'siyle eşleşiyorsa bir dokümanı tanımlayıp silmeye çalışır.
- Son olarak, her bir belge için: a. Geçerli arama derinliği (aşağıya bakın), yapılandırılan arama derinliğinden azsa veya bu derinliğe eşitse işlem, geçerli dokümanın tüm alt koleksiyonları için tekrarlanır. b. Arama alanları yapılandırılmışsa uzantı, sağlanan alanların kullanıcının UID'siyle eşleşip eşleşmediğini kontrol eder. Eşleşme bulunursa doküman silinir.
Arama Derinliği
Uzantı, yapılandırılabilir bir arama derinliği değeri sunar (varsayılan olarak 3). Geçiş yalnızca mevcut arama derinliği, yapılandırılmış arama derinliğinden az veya bu derinliğe eşitse yürütülür. Geçerli arama derinliği, geçerli koleksiyonun veya dokümanların üst koleksiyonunun derinliğine bağlıdır. Örneğin:
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
Bu uzantı, dizilerde veya haritalarda depolanan UID'leri otomatik olarak SİLMEZ ve yukarıda belirtilen derinliğin ötesinde, iç içe çok katmanlı alt koleksiyonlarda depolanan kullanıcı kimliğine göre anahtarlanmış verileri aramaz.