使用 Firestore 安全规则来控制对使用“Run Subscription Payments with Stripe”扩展的订阅相关数据的访问

问题描述

我已经使用“Run Subscription Payments with Stripe”Firebase 扩展程序设置了我的 Firebase 项目,并且一切正常。此应用要求用户能够购买两种类型的订阅产品:

  1. 会员订阅一般允许访问该应用。此订阅利用 Stripe 产品的 firebaseRole 元数据属性自动应用 stripeRole: 'member'自定义声明。
  2. 为了访问数据库的不同子集合而购买的额外订阅。这些无法使用自动自定义声明生成,因为 stripeRole 声明已被上述会员订阅使用。

我现在希望使用安全规则来限制对需要订阅的子集合的访问。

我面临的问题是我不知道如何在安全规则中引用 {userId}/subscriptions/ 集合以确保用户实际订阅了他们尝试访问的数据。 {userId}/subscriptions/ 集合中的文档由 Firebase 扩展在幕后的云函数命名(例如 sub_xxxxxxxxxxxxx,我认为它是特定于该用户订阅的唯一 Stripe ID。

那么我如何检查用户是否拥有订阅文档,如果这样做,我需要规则来查询用户subscriptions 集合以查找具有 {{ 1}} OR Metadata 引用对应于他们试图访问的数据,据我所知,安全规则中的查询是不可能的?

我想避免必须设置任何类型的索引集合来跟踪谁订阅了什么,因为这在某种程度上违背了让扩展将数据库与 Stripe 同步的目的,并且需要我编写一个额外的云函数. (也许这是唯一的选择!)

以下是可以完成这项工作的规则,如果可能的话。希望这有助于说明问题:

product

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)