Правила Firestore предназначены для определения правил доступа к определенным коллекциям в вашем Проекте.
Они в основном используются для проверки доступа для пользователя. Они не предназначены для чего-либо другого, кроме проверки логики. Поэтому они не поддерживают операторы switch, if..else условия и условные выражения.
Вы можете использовать условие ИЛИ, чтобы проверить, может ли пользователь добавить продукт в соответствии с уровнем пользователя, которому он / она принадлежит.
function canAddProduct() {
return ( getTier() == 'UserTier.FREE' || getTier() == 'UserTier.SILVER'
|| getTier() == 'UserTier.GOLD' || getTier() == 'UserTier.COMPANY' );
}
Это самый простой способ проверки доступа.
Однако для вашего конкретного случая попробуйте это. Я предполагаю, что у вас есть дополнительные проверки пользователя в соответствии с уровнем, к которому они принадлежат.
Здесь я проверяю, истек ли пробный период пользователя, только если он принадлежит БЕСПЛАТНО.
function getUser() {
//Get the user
return get(/users/$(request.auth.uid)).data;
}
function canAddProduct() {
return ( getTier() == 'UserTier.FREE' && checkFreeTierAccess(getUser()) ||
getTier() == 'UserTier.SILVER' && checkSilverTierAccess(getUser()) ||
getTier() == 'UserTier.GOLD' && checkGoldTierAccess(getUser()) ||
getTier() == 'UserTier.COMPANY' && checkCompanyTierAccess(getUser())
);
}
function checkFreeTierAccess(user) {
//do the checks
return user.isTrailPeriodExpired;
}
Надеюсь, это решит вашу проблему.