有没有一种方法可以根据Firestore值将映像上传到Firebase存储?

时间:2019-11-01 18:17:49

标签: firebase google-cloud-firestore google-cloud-functions

我认为使用Firebase可以很简单,但是我还没有找到解决方案:

我的firestore数据库中有一个Admins集合,并且基本上想限制Firebase存储中的Images文件夹,因此只有Admins可以添加新图像。 安全规则不允许我执行“如果userID在数据库中,则允许创建”。

有人知道如何实现此功能吗?从其他问题来看,函数似乎可以做到这一点,但是我找不到如何使用函数上传图像的有效解决方案,更不用说基于数据库数据限制它了。

任何指针将不胜感激!

1 个答案:

答案 0 :(得分:2)

我在类似情况下所做的事情是使用Cloud Function将管理员状态同步到Firebase Auth custom claims。简化的版本可能类似于:

exports.setAdminClaim = functions.firestore.document('admins/{uid}').onWrite(change => {
  if (change.after.exists) {
    return admin.auth().setCustomUserClaims(change.after.id, {admin: true});
  }

  return admin.auth().setCustomUserClaims(change.after.id, {admin: false});
});

这使您可以在存储规则中使用自定义声明:

allow write: if request.auth.token.admin == true