Kullanıcı Verilerini Silme uzantısı (delete-user-data), kullanıcının Firebase projenizden silinmesi durumunda kullanıcının verilerini silmenize olanak tanır. Bu uzantıyı, kullanıcı verilerini aşağıdakilerden herhangi birinden veya tümünden silecek şekilde yapılandırabilirsiniz: Cloud Firestore, Realtime Database veya Cloud Storage. Uzantının verileri silme için her tetikleyicisi, kullanıcının UserId ile anahtarlanır.
Bu uzantı, kullanıcı gizliliğine saygı duymak ve uygunluk koşullarını karşılamak için kullanışlıdır. Ancak bu uzantının kullanılması, devlet ve sektör düzenlemelerine uyulacağını garanti etmez.
Ön koşullar
Kullanıcılarınızı yönetmek için Firebase Authentication'ı 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ıyorsanız 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. Özetle, aşağıdakilerden birini yapın:
Firebase konsolu: Aşağıdaki düğmeyi tıklayın:
CLI: 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çme konusunda yardım almak 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,usersveadminskoleksiyonlarınız varsa ve her koleksiyonda belge kimlikleri olarak kullanıcı kimliğinin bulunduğu belgeler varsausers/{UID},admins/{UID}girebilirsiniz.Cloud Firestore silme modu:
(Yalnızca
Cloud Firestore pathsparametresini kullanıyorsanız geçerlidir.) Cloud Firestore belgelerini nasıl silmek istiyorsunuz? Alt koleksiyonlardaki dokümanları da silmek için bu parametreyirecursiveolarak ayarlayın.Realtime Database örneği:
Hangi Realtime Database örneğinden kullanıcı verilerini silmek istiyorsunuz?
Realtime Database konumu:
(Yalnızca
Realtime Database instanceparametresini sağladıysanız geçerlidir.) Hangi Realtime Database konumundan kullanıcı verilerini silmek istiyorsunuz?Realtime Database yolları:
Realtime Database örneğinizdeki hangi yollar kullanıcı verilerini içeriyor? Realtime Database 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/{UID},admins/{UID}.Cloud Storage yolları:
Kullanıcı verilerini Google Cloud Storage'da nerede depoluyorsunuz? Cloud Storage kullanmıyorsanız boş bırakın. Depolama paketlerinizdeki dosya 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 paketinize
{UID}-pic.pngdosya adlandırma şemasıyla yüklenen tüm dosyaları silmek için{DEFAULT}/{UID}-pic.pnggirin. - Dosya adlandırma şeması
{UID}-logs.txtolanmy-app-logsadlı başka bir paketteki tüm dosyaları da silmek için{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txtgirin. - Kullanıcı kimliği etiketli bir dizini ve tüm dosyalarını (ör.
media/{UID}) da silmek için{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}girin.
- Varsayılan paketinize
Silinecek verileri keşfetme
Bu uzantının silinecek verileri bulmak için kullandığı birkaç mekanizma vardır. Uzantının verileri silebilmesi için bu mekanizmaların açıkça yapılandırılması gerekir. Uzantı, yalnızca sağlanan mekanizmalara göre silinecek şekilde açıkça yapılandırılmış verileri siler.
Her hizmet arasındaki aşağıdaki davranış farklılıklarına dikkat edin:
- Cloud Firestore: Varsayılan davranış, 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.
- Realtime Database: Belirtilen düğümdeki tüm veriler silinir.
- Depolama: 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ının silinecek Firestore belgelerini otomatik olarak bulmasını sağlamak için "Enable auto discovery" (Otomatik bulmayı etkinleştir) yapılandırma parametresini "Yes" (Evet) olarak ayarlayın.
Otomatik keşif, 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 yöntemle tanımlar:
- Öncelikle uzantı, veritabanındaki tüm kök koleksiyonları bulur. Bir koleksiyonun kimliği, kullanıcının UID'siyle eşleşiyorsa koleksiyonun tamamı silinir ("Cloud Firestore silme modu" için uzantının yapılandırmasına bağlı olarak silme işlemi yinelemeli veya yüzeysel olabilir).
- İkinci olarak, koleksiyon kimliği eşleşmezse uzantı, doküman kimliği kullanıcının UID'siyle eşleşen bir dokümanı tanımlamaya ve silmeye çalışır.
- Son olarak, her belge için: a. Geçerli arama derinliği (aşağıya bakın) yapılandırılmış arama derinliğinden küçükse veya bu değere eşitse işlem, mevcut 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 (varsayılan olarak 3) sunar. Geçiş yalnızca mevcut arama derinliği, yapılandırılmış arama derinliğinden küçük veya ona eşitse yürütülür. Geçerli arama derinliği, geçerli koleksiyonun veya belgelerin ü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 kullanıcı kimliklerini otomatik olarak silmez ve yukarıda belirtilen derinliğin ötesinde, iç içe yerleştirilmiş alt koleksiyonlarda depolanan kullanıcı kimliğiyle anahtarlanmış verileri aramaz.