Kartons
–
Preiseinträge
–
Lagereinträge
–
Nutzer
–
Apify Preisscraper
Apify scrapet täglich alle Karton-URLs und schreibt die Preise automatisch in Firebase.
Letzter Check:–
Kartons überwacht:–
Status: Aktiv
Firestore Sicherheitsregeln
Kopiere diese Regeln in Firebase → Firestore → Regeln:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function signedIn() {
return request.auth != null;
}
function isAdmin() {
return signedIn()
&& (
request.auth.token.email == "audiofootage@hotmail.com"
|| request.auth.token.email in get(/databases/$(database)/documents/config/admins).data.emails
);
}
match /apify_collected_data/{id} {
allow read: if signedIn();
allow write: if false;
}
match /products/{id} {
allow read: if signedIn();
allow write: if false;
}
match /priceHistory/{id} {
allow read: if signedIn();
allow write: if false;
}
match /aumat_produkte/{id} {
allow read: if signedIn();
allow write: if isAdmin();
}
match /stock/{id} {
allow read: if signedIn();
allow write: if isAdmin();
}
match /stock_settings/{id} {
allow read: if signedIn();
allow write: if isAdmin();
}
match /settings/{id} {
allow read: if signedIn();
allow write: if isAdmin();
}
match /config/{id} {
allow read: if signedIn();
allow write: if signedIn() && request.auth.token.email == "audiofootage@hotmail.com";
}
match /users/{userId} {
allow read: if signedIn() && (request.auth.uid == userId || isAdmin());
allow create: if signedIn()
&& request.auth.uid == userId
&& request.resource.data.keys().hasOnly(['favorites']);
allow update: if signedIn()
&& request.auth.uid == userId
&& request.resource.data.diff(resource.data).affectedKeys().hasOnly(['favorites']);
allow delete: if false;
}
match /{document=**} {
allow read, write: if false;
}
}
}
In Firebase öffnen
Mitarbeiter
Neue Mitarbeiter werden direkt in Firebase Authentication angelegt.
+ Mitarbeiter hinzufügenMaß-Suche Einstellungen