54 lines
1.7 KiB
Plaintext
54 lines
1.7 KiB
Plaintext
rules_version = '2';
|
|
service cloud.firestore {
|
|
match /databases/{database}/documents {
|
|
function isAdmin() {
|
|
return request.auth != null && request.auth.uid == "dev-admin-placeholder-uid";
|
|
}
|
|
|
|
match /products/{productId} {
|
|
allow read: if true;
|
|
allow write: if isAdmin();
|
|
}
|
|
|
|
match /services/{serviceId} {
|
|
allow read: if true;
|
|
allow write: if isAdmin();
|
|
}
|
|
|
|
match /scheduleTemplate/{docId} {
|
|
allow read: if true;
|
|
allow write: if isAdmin();
|
|
}
|
|
|
|
match /scheduleExceptions/{date} {
|
|
allow read: if true;
|
|
allow write: if isAdmin();
|
|
}
|
|
|
|
match /bookedSlots/{date} {
|
|
allow read: if true;
|
|
allow write: if isAdmin();
|
|
}
|
|
|
|
match /bookings/{bookingId} {
|
|
allow create: if request.resource.data.keys().hasAll(['serviceId', 'date', 'time', 'contact', 'status'])
|
|
&& request.resource.data.date is string
|
|
&& request.resource.data.date.matches('^[0-9]{4}-[0-9]{2}-[0-9]{2}$')
|
|
&& request.resource.data.time is string
|
|
&& request.resource.data.contact is map
|
|
&& request.resource.data.contact.keys().hasAll(['name', 'phone', 'email', 'notes'])
|
|
&& request.resource.data.status is string;
|
|
allow read, update, delete: if isAdmin();
|
|
}
|
|
|
|
match /inquiries/{inquiryId} {
|
|
allow create: if request.resource.data.keys().hasAll(['productId', 'contact', 'status'])
|
|
&& request.resource.data.productId is string
|
|
&& request.resource.data.contact is map
|
|
&& request.resource.data.contact.keys().hasAll(['name', 'email', 'notes'])
|
|
&& request.resource.data.status is string;
|
|
allow read, update, delete: if isAdmin();
|
|
}
|
|
}
|
|
}
|