Firestoreで数値の範囲を制限するセキュリティルール
Firestoreのセキュリティルールで数値の範囲を制限することができます。悪意のあるユーザにより思わぬ値を登録されてしまい、誤動作を起こすことを防げます。
フィールドの大小比較を使う
数値の範囲を指定するには、フィールドの値を大小比較します。 例えば、"age"(年齢)フィールドを18以上65以下に制限するには以下のように記述します。
allow create, update: if request.resource.data.age >= 18 && request.resource.data.age <= 65
数値の範囲の使用例
例として参加登録フォームを作ってみます。
データ構造はこのようになっています。
年齢を必須かつ18以上65以下という条件を、セキュリティルールで書くとこのようになります。
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /applications/{application} { function validApplication(docData) { return docData.age is int && docData.age >= 18 && docData.age <= 65; } allow create, update: if validApplication(request.resource.data) } } }
18歳で登録してみます。
Firebaseのコンソールで確認すると登録されていることが分かります。
-(マイナス)30歳で登録してみると、エラーになり、コンソールを確認すると登録されていないことが分かります。
以上でFirestoreのセキュリティルールで数値の範囲を制限することができました。