如果在firebase中将权限设置为true,则允许对用户具有写特权

时间:2018-09-21 17:37:31

标签: firebase nosql google-cloud-firestore firebase-security-rules

我有一个如下所示的用户节点:

name:    "someone"
isAdmin: true
isDev: true
permissions:
  shots: true

最终,我想授予管理员身份的任何人读写任何内容。

但是与此同时,如何检查用户权限,然后授予访问权限?

类似的东西:

match /{document=**} {
  allow write: if request.user.permissions.shots == true;
} 

更新:

我走得更远。

allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.permissions.shots == true;

我觉得应该可以工作,因为以下内容可以工作:

allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.name == 'someone';

更新:

随着我的深入研究,下面的方法似乎是正确的方向,但仍然行不通

allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.permissions2.child('shots').val() == true;

1 个答案:

答案 0 :(得分:0)

所以,事实证明我使它变得比原来更难。

如果我只是省略

  

==真

它本来可以工作。我以为那是我尝试的第一件事,但是哦

allow write: if currentUser().permissions.shots || currentUser().isAdmin;

仅供参考,此外,我还添加了一个函数来将其干燥

function currentUser() {
        return get(/databases/$(database)/documents/users/$(request.auth.uid)).data;
    }