Search code examples
firebasegoogle-cloud-firestorefirebase-security

Firestore rules keep changing


I am using Firestore for my project and have updated my rules as such:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
        allow read, write: if request.auth != null;
          
    }
  }
}

Yet any time there is a change to the firestore it changes to something like this:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if
          request.time < timestamp.date(2020, 11, 26);
    }
  }
}

I have reset it multiple times over multiple days but it keeps changing back, what am I doing wrong?

Edit

Here is my package.json, it does not look like there is any reference to a rules file.

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "lint": "eslint .",
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "12"
  },
  "main": "index.js",
  "dependencies": {
    "firebase-admin": "^9.2.0",
    "firebase-functions": "^3.11.0",
    "bad-words": "^3.0.3"
  },
  "devDependencies": {
    "eslint": "^5.12.0",
    "eslint-plugin-promise": "^4.0.1",
    "firebase-functions-test": "^0.2.0"
  },
  "private": true
}

Solution

  • My guess is that you're deploying a local, stale rules file when you deploy functions.

    Check your firebase.json for a reference to a Firestore rules file, and/or run firebase deploy --only functions.