问题描述
我已经使用“Run Subscription Payments with Stripe”Firebase 扩展程序设置了我的 Firebase 项目,并且一切正常。此应用要求用户能够购买两种类型的订阅产品:
- 会员订阅一般允许访问该应用。此订阅利用 Stripe 产品的
firebaseRole
元数据属性自动应用stripeRole: 'member'
的自定义声明。 - 为了访问数据库的不同子集合而购买的额外订阅。这些无法使用自动自定义声明生成,因为
stripeRole
声明已被上述会员订阅使用。
我现在希望使用安全规则来限制对需要订阅的子集合的访问。
我面临的问题是我不知道如何在安全规则中引用 {userId}/subscriptions/
集合以确保用户实际订阅了他们尝试访问的数据。 {userId}/subscriptions/
集合中的文档由 Firebase 扩展在幕后的云函数命名(例如 sub_xxxxxxxxxxxxx
,我认为它是特定于该用户订阅的唯一 Stripe ID。
那么我如何检查用户是否拥有订阅文档,如果这样做,我需要规则来查询用户的 subscriptions
集合以查找具有 {{ 1}} OR Metadata
引用对应于他们试图访问的数据,据我所知,安全规则中的查询是不可能的?
我想避免必须设置任何类型的索引集合来跟踪谁订阅了什么,因为这在某种程度上违背了让扩展将数据库与 Stripe 同步的目的,并且需要我编写一个额外的云函数. (也许这是唯一的选择!)
以下是可以完成这项工作的规则,如果可能的话。希望这有助于说明问题:
product
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)