← Projects

Next.js + Firebase

firestore.rules

firestore.rulesLines 120-121
Theme:
Section 1 of 18
Section 1/18 • Lines 120-121

Firestore Security Rules

These rules control access to your Firestore database and enforce data security.

Key Concepts

ConceptDescription
Security RulesDefine who can read/write data
Server-SideRun on Google's servers (can't be bypassed)
AutomaticApplied to every request automatically
TestableTest with Firestore Rules Playground
## Rule Structure

match /path/to/document {

allow operation: if condition;

}

Operations

OperationDescriptionIncludes
readRead operationsget, list
writeWrite operationscreate, update, delete
getRead single document-
listQuery multiple documents-
createCreate new document-
updateModify existing document-
deleteRemove document-
## Available Variables

VariableDescriptionExample
request.authCurrent user info (null if not authenticated)request.auth.uid
request.resourceNew data being writtenrequest.resource.data.title
resourceExisting data in databaseresource.data.userId
request.timeCurrent timestamprequest.time
## Deployment

Via Firebase Console

  • Go to Firebase Console
  • Navigate to Firestore → Rules
  • Paste these rules
  • Click "Publish"
  • Via Firebase CLI

    firebase deploy --only firestore:rules

    Why Security Rules Matter

  • Protection: Prevent unauthorized access to data
  • Validation: Ensure data integrity and format
  • Privacy: Enforce user-level data isolation
  • Server-side: Can't be bypassed by client code
  • Rules Version Declaration

    Specifies which version of Firebase Security Rules to use.

    Version 2

    Rules version 2 is the current standard. It provides:

  • Better error messages
  • More consistent behavior
  • Additional built-in functions
  • Required for newer Firebase features
  • Always Use Version 2

    rules_version = '2';

    Version 1 is deprecated and shouldn't be used for new projects.

    Firestore Service Declaration

    Declares rules for the Cloud Firestore service.

    Service Scope

    service cloud.firestore {
    

    // All Firestore rules go here

    }

    Database Match

    match /databases/{database}/documents {

    // Document path rules go here

    }

  • {database}: Wildcard for database name
  • /documents: Root of document paths
  • All collection/document rules nested inside
  • ↓ Next Section
    Lines 214-218
    # Helper Functions Reusable logic for cleaner and more maintainable rules. ## Benefits of Helper ...
    Loading Monaco Editor...
    TypeScript support initializing...