diff --git a/firestore.rules b/firestore.rules index 301f337..b582f58 100644 --- a/firestore.rules +++ b/firestore.rules @@ -28,6 +28,19 @@ service cloud.firestore { ]); } + function validRideCreate(userId, rideId) { + return ownsUser(userId) + && request.resource.data.ownerId == userId + && request.resource.data.id == rideId; + } + + function validRideUpdate(userId) { + return ownsUser(userId) + && resource.data.ownerId == userId + && request.resource.data.ownerId == resource.data.ownerId + && request.resource.data.id == resource.data.id; + } + match /users/{userId} { allow create: if validUserCreate(userId); allow read: if ownsUser(userId); @@ -35,7 +48,10 @@ service cloud.firestore { allow delete: if ownsUser(userId); match /rides/{rideId} { - allow read, write: if ownsUser(userId); + allow create: if validRideCreate(userId, rideId); + allow update: if validRideUpdate(userId); + allow read, delete: if ownsUser(userId) && resource.data.ownerId == userId; + match /events/{eventId} { allow read, write: if ownsUser(userId); }