Zum Inhalt

Firebase Konfiguration & Dokumentation

Dieses Verzeichnis enthält Dokumentation und Deployment-Tools für Firebase.

⚠️ Wichtig

Die aktiven Firebase-Konfigurationsdateien liegen im Projekt-Root: - /firestore.rules - Firestore Security Rules - /storage.rules - Storage Security Rules - /firestore.indexes.json - Composite Indexes - /firebase.json - Projekt-Konfiguration - /cors.json - Storage CORS-Konfiguration

Diese Dateien werden von Git getrackt und bei git clone automatisch heruntergeladen.

Dateien in diesem Verzeichnis

  • README.md - Diese Datei
  • deploy_rules.sh - Interaktives Deployment Script
  • ROLES_AND_PERMISSIONS.md - User-Rollen Dokumentation
  • CLOUD_FUNCTIONS_AND_RULES.md - Cloud Functions & Security Rules
  • QUICK_REFERENCE.md - Schnellreferenz für häufige Aufgaben

Neues Projekt Setup

1. Repository klonen

git clone https://github.com/Tech-Schuppen/easy_sale_erp.git
cd easy_sale_erp

Die Firebase-Konfigurationsdateien sind bereits im Root vorhanden!

2. Firebase CLI installieren

npm install -g firebase-tools

3. Firebase Login

firebase login

4. Firebase Projekt hinzufügen

firebase use --add
# Wähle dein Projekt aus der Liste

5. Rules deployen

./firebase_config/deploy_rules.sh
# oder direkt:
firebase deploy --only firestore:rules,storage:rules,firestore:indexes

Workflow

Änderungen an Rules

  1. Bearbeite die Dateien im Root:

    vim firestore.rules
    vim storage.rules
    

  2. Teste lokal (optional):

    firebase emulators:start
    

  3. Deploye:

    ./firebase_config/deploy_rules.sh
    

  4. Commit:

    git add firestore.rules storage.rules
    git commit -m "Updated firestore rules"
    git push
    

Production Deployment

# Wähle Production Projekt
firebase use production

# Deploye Rules
firebase deploy --only firestore:rules,storage:rules

# Zurück zu Dev
firebase use dev

Wichtige Hinweise

⚠️ Firestore Rules - Sicherheit

Aktuelle Rules erfordern Authentifizierung für alle Collections:

match /{document=**} {
  allow read, write: if request.auth != null;
}

Ausnahme - System Settings (nur SuperAdmin):

match /system_settings/{settingId} {
  allow read: if isAuthenticated();
  allow write: if isSuperAdmin(); // userRole == 2
}

Details siehe: ROLES_AND_PERMISSIONS.md

Storage Rules

Die Storage Rules erlauben: - Artikel-Bilder: Öffentlich lesbar, schreiben nur für authentifizierte User - Alle anderen Dateien: Nur für authentifizierte User

Storage CORS

Die /cors.json konfiguriert Cross-Origin Resource Sharing:

# CORS auf Storage anwenden
gsutil cors set cors.json gs://YOUR-PROJECT.appspot.com

# Aktuelle Konfiguration prüfen
gsutil cors get gs://YOUR-PROJECT.appspot.com

Multi-Projekt Setup

Für mehrere Firebase-Projekte (dev, staging, prod):

# Projekte hinzufügen
firebase use --add

# Zwischen Projekten wechseln
firebase use dev
firebase use staging
firebase use prod

# Aktuelles Projekt anzeigen
firebase use

# Auf spezifisches Projekt deployen
firebase deploy --only firestore:rules --project dev
firebase deploy --only firestore:rules --project prod

Firestore Indexes

Die Indexes werden automatisch aus firestore.indexes.json deployed.

Neue Indexes hinzufügen: 1. Firebase Console → Firestore → Indexes 2. Klicke auf den Link in der Fehlermeldung der Query 3. Oder exportiere bestehende Indexes:

firebase firestore:indexes > firestore.indexes.json

Rules Testen

Emulator

# Emulator starten
firebase emulators:start --only firestore

# Rules Unit Tests (optional)
firebase emulators:exec --only firestore "npm test"

Rules Playground

  • Firebase Console → Firestore → Rules
  • Tab "Rules Playground" für manuelle Tests