Правило безопасности Firestore - работает на SIM-карте, но не в коде (отсутствует разрешение на проверку идентификатора родительского документа) - PullRequest
0 голосов
/ 07 мая 2020

Мои настройки Firestore выглядят следующим образом:

    match /Profile/{profile}/Sites/{site} {
       allow create : if request.auth.uid == profile;
    }

Я хочу, чтобы документ создавался только под профилем пользователя! Итак, я ищу что-то подобное, но это не работает, я ожидаю, что идентификатор профиля будет указан выше.

Следующее работает, но тогда он не проверяет, создается ли сайт под этим только для пользователя

allow create : if exists(/databases/$(database)/documents/Profile/$(request.auth.uid));

ОБНОВЛЕНИЕ: Я попробовал следующее условие для документа «создать» в симуляторе, и оно работает там:

Profile/*myUIDHere*/Sites/{site}

Мое правило безопасности, которое работало на симуляторе:

match /Profile/{profile}/Sites/{site} {
      allow create : if request.auth.uid == profile;
}

Но он не работает, когда я запускаю код с телефона - я получаю ошибку отсутствия или недостаточных разрешений. Я использую следующий код:

Firestore.instance
        .collection('Profile/${currentFirebaseUser.uid}/Sites')
        .document(site.uID)
        .setData(site.toJson())
...