firebase firestore のセキュリティールール書く際に必要な情報

● 事前に組み込まれている関数、変数を活用する

Firestore rules tips - Qiita

exists 存在やアクセスするためのパスを確認した後ゲットを行うと良い

debug(exists(/databases/$(database)/documents/users/XXXXXXXXXXXXXXXXXXXXXXXXXX))

  ↓  bool_value: true となった場合 このパスの位置にドキュメントがあることがわかるので get() に切り替えます

debug(get(/databases/$(database)/documents/users/XXXXXXXXXXXXXXXXXXXXXXXXXX))

  ↓  $(変数) で変数展開できます。現在ログイン中の uid はこちら

debug(get(/databases/$(database)/documents/users/$(request.auth.uid)))

● Firestore セキュリティルールで使える関数一覧

Firestore セキュリティルールで使える関数一覧 - Qiita

● ワイルドカードと再帰ワイルドカード

CloudFirestoreのセキュリティルールの構造化  |  Firebase

● firebase firestore のセキュリティールール の debug()

debug() で囲むとエミュレーターを使ったときに firestore-debug.log

string_value: "hogehoge"

のような形でデバッグが表示されます(stringの場合)

・配列をdebugする

debug(['a','b'])

 ↓ firestore-debug.log に次のように書き出されます

list_value {
  values {
    string_value: "a"
  }
  values {
    string_value: "b"
  }
}

・リクエストパスをdebugする

debug(request.path)

 ↓ firestore-debug.log に次のように書き出されます

path_value {
  segments {
    simple: "databases"
  }
  segments {
    simple: "(default)"
  }
  segments {
    simple: "documents"
  }
  segments {
    simple: "users"
  }
  segments {
    simple: "xxxxxxxxxxxxxxxxYYYYYYYYYYYYZZZZZZZZZZ"
  }
  segments {
    simple: "news"
  }
}

● ワイルドカード

単一リソースのワイルドカード

match /posts/{post}

これは posts 以下のすべてのドキュメントにマッチしますが、 posts 以下にコメントなどがネストされている場合は、コメントのサブコレクションにはマッチしません。

match /posts/{document=**}

これだと posts 以下なんでもマッチします。 引用 : posts

Firestore のセキュリティルールのデバッグには debug() を使おう - Qiita

【改訂版】 Firebase Cloud Firestore rules tips – su- tech blog

No.2240
11/25 15:10

edit