2016-09-30 8 views
4

Firebaseを使ってカレンダーアプリを作っています。他の関連データに基づいて読み取り権限を与えるためのFirebaseルール

私のDB構造は次のようである:

- calendar 
    - $year 
    - $month 
     - $day 
     - $uid 
      - name 
      - arrivalStatus 
- users 
    - $uid 
    - name 
    - team 

それでは、私がやりたいことは、同じチームの人がカレンダーにお互いのエントリを読むことができなければならないということです。

{ 
"rules": { 
    "users": { 
     "$uid": { 
     ".read": "auth != null && auth.uid == $uid", 
     ".write": "auth != null && auth.uid == $uid" 
     } 
    }, 
    "calendar": { 
    "$year":{ 
    "$month":{ 
     "$day":{ 
     "$uid":{ 
      ".read": "auth != null && 
        root.child('users/'+auth.uid+'/team').exists() && 
        root.child('users/'+$uid+'/team').val() == root.child('users/'+auth.uid+'/team').val()", 
      ".write": "auth != null && auth.uid == $uid" 
      } 
     } 
     } 
    } 
    } 
} 
} 

しかし、シミュレーションを通してそれを実行し、要求は関係なく、あなたが上にあるものをチームに承認されていない何らかの理由のため:私はこのようなルールを設定しました。私は明白な何かを欠いていますか

EDIT:

したがって、基本的のは、このデータセットを想定してみましょう:このような状況で

-firecalender 
-calendar 
    -2016 
    -9 
    -30 
    -gsdfgd 
     -Name: "MG" 
     -Status:"PM" 
-users 
    -abcd 
    -name: "Tester" 
    -team: "bc" 
    -efg 
    -name: "noteam" 
    -team: "funny inc" 
    -gsdfgd 
    -name: "bossman" 
    -team : "bc" 

、ABCDはカレンダー内の各gsdfgdの情報を読み取ることができるはずですが、EFGはアクセスを拒否されなければなりません。

+0

あなたがセキュリティルールでの$ UIDの名前を変更しようとしています。今は2つの場所で$ uidを使用しています。おそらくfirebaseは違いを見ることができません。 –

+1

失敗する操作(正確なパス、データ、アクティブuid)と、それが成功する基礎となるデータを表示できますか? –

+0

基本的には、UIDがabcdまたはgsdfgdの場合はcalendar/2016/9/30/gsdfgd /が許可されますが、UIDがefgの場合は拒否されます – Fireprufe15

答えて

関連する問題