Created
December 23, 2020 10:18
-
-
Save frankiesardo/8c6350c80ecfe9bae19b4ea5458c3635 to your computer and use it in GitHub Desktop.
Medium blog post
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rules_version = '2'; | |
service cloud.firestore { | |
match /databases/{database}/documents { | |
match /rooms/{roomId} { | |
allow get | |
allow create: if | |
request.resource.data.keys().hasOnly(['hostId', 'timestamp']) && | |
request.resource.data.hostId == request.auth.uid && | |
request.resource.data.timestamp == request.time | |
match /guests/{guestId} { | |
allow read | |
allow create: if | |
isGuest() && dataIsCorrect() | |
allow update: if | |
(isGuest() || isHost()) && dataIsCorrect() | |
function isGuest() { | |
return request.auth.uid == guestId | |
} | |
function isHost() { | |
return request.auth.uid == get(/databases/$(database)/documents/rooms/$(roomId)).data.hostId; | |
} | |
function dataIsCorrect() { | |
return request.resource.data.keys().hasOnly(['buzzed', 'name']) && | |
request.resource.data.name is string && | |
request.resource.data.name.size() < 100 && | |
(request.resource.data.buzzed == null || | |
request.resource.data.buzzed == request.time) | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment