#ios #firebase #google-cloud-firestore #firebase-security
#iOS #firebase #google-облако-firestore #firebase-безопасность
Вопрос:
У меня есть структура, подобная приведенной выше. Чего я хочу добиться, так это того, что в chat_room пользователь может писать, только если в массиве users этот uid.isActive == true
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow update, delete: if request.auth != null amp;amp; request.auth.uid == userId;
allow create, read: if request.auth != null;
}
match /chats/{chatId} {
allow read, write: if request.auth.uid != null;
match /chat_room/{roomId} {
allow read, write: if request.auth.uid != null;
}
}
}
}
Ответ №1:
Похоже, вы хотите:
match /chat_room/{roomId} {
allow read, write: if get(/databases/$(database)/documents/chats/$(chatId)).data.users[request.auth.uid].IsActive == true;
}
Поэтому при записи в chat_room
документы загружается родительский документ, а затем проверяется, отмечен ли пользователь там как активный.