【问题标题】:Compilation errors in firestore.rules: Unexpected 'if'firestore.rules 中的编译错误:意外的“如果”
【发布时间】:2022-01-04 14:13:57
【问题描述】:

我的 firestore.rules 中有这个编译错误:

Compilation errors in firestore.rules:
[E] 35:7 - Unexpected 'if'.
[E] 38:7 - Unexpected 'else'.
[E] 42:3 - Unexpected '}'.

firestore.rules 节选如下:

service cloud.firestore {
  match /databases/{database}/documents {

    match /requests/{id} {
     allow read: if isSignedIn() && ((getUserKennung() in resource.data.users_read) || userIsXY());
     allow write: if isSignedIn() && ((getUserKennung() in resource.data.users_write) || userIsXY());
    }

    function getUserKennung(){
     let email = request.auth.token.email;
     if(email.lower().matches('.*@provider[.]org')){
       return email[0:7].upper();
     }
     else {
       return 'ERR: Invalid usermail';
     }
    }

    function userIsXY(){
      return request.auth.token.email == 'XY@provider.org';
    }

    function isSignedIn(){ 
      return request.auth != null;
    }
  }
}

我不知道为什么会发生错误。

【问题讨论】:

    标签: google-cloud-firestore firebase-security


    【解决方案1】:

    我认为 if...then...else 不允许在安全规则中的自定义函数中使用,因此您可能想尝试这样的三元表达式:

    function getUserKennung(){
     let email = request.auth.token.email;
     return email.lower().matches('.*@provider[.]org')
       ? email[0:7].upper()
       : 'ERR: Invalid usermail';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 2019-11-29
      • 2012-08-04
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多