Мы разрабатываем SaaS-решение для спортивных залов и фитнес-центров.
Есть 3 пакета.Первый бесплатный для первых 50 участников, которые они добавляют в систему.Затем требуется обновление, чтобы добавить больше участников.
Существует правило безопасности, запрещающее добавление новых участников после достижения этого предела.Проблема в том, что если подписка обновляется, а затем понижается.
Допустим, они обновились, добавили в общей сложности 100 участников, а затем понизили их до бесплатного плана, включающего только 50 участников.
В этомЕсли мы хотим, чтобы они могли получить только последние 50 участников, которые они добавили в коллекцию участников.Другими словами, мы хотим ограничить доступ к запросу более 50 документов членов.
match /_users/{memberId} {
allow read: if isMemberAuthenticated(memberId) || isGymAuthenticated();
allow update: if isGymAuthenticated() || isMemberAuthenticated(memberId);
allow create: if isGymPaid() && isGymAuthenticated();
}
Мы рассмотрели следующие решения:
- Наличие идентификационного номера вУчастники документируют и ограничивают доступ к любому запросу с ID <разрешена подписка.Проблема заключается в том, что пользователь имеет доступ к документам участников и, таким образом, может изменять свои идентификаторы. </li>
- У пользователя Firebase Cloud есть право запрашивать документы участников и удалять права записи пользователя.Это выглядит как анти-шаблон для Firestore.Поскольку мы должны реализовать облачные функции для любого изменения, которое пользователь вносит в документы участника.