Я пытаюсь выполнить некоторые правила безопасности для простого приложения для знакомств, использующего Firebase (на самом деле тест, поэтому не ожидайте многого от моей структуры данных). У меня есть следующая база данных:
Female_User (Collection)
........JikoSUJJozEEUJz7gLQq (Document)
........Data (Collection)
........Likes (Collection)
........9SpjkLtbo5fKz1f3doGx (Document)
........Unlikes (Collection)
........Matches (Collection)
Мужской пользователь эквивалентен.
Предположим, что мы - мужчина. Пользователь 9SpjkLtbo5fKz1f3doGx
, любящий женщину. Пользователь JikoSUJJozEEUJz7gLQq
:
Процесс записи в женскую (как правило, противоположности) /Matches/{documents}
разрешается только в том случае, если в ней есть * мужской идентификатор /Likes/{documents}
.
Я попробовал следующие правила безопасности с симулятором:
service cloud.firestore {
match /databases/{database}/documents {
allow read;
match /Female_User/{UserID}{
match /Matches/{MatchIDs}{
allow write: if exists(/databases/$(database)/documents/Female_User/$(User_ID)/Likes/$(request.auth.uid));
}
}
}
}
Процедура запрещена каждый раз в симуляторе. Где ошибка в моей проверке? И нужно ли мне указывать женский UID, потому что если у нас несколько учетных записей и 3 женщины понравились пользователю мужского пола, разве метод не позволил бы мужчине писать все время и для каждой учетной записи, кроме тех, которые ему нравились?