Last active
December 11, 2020 19:46
-
-
Save palkerecsenyi/90fec16d5f403ae30c63dea49e738020 to your computer and use it in GitHub Desktop.
This file gets updated continuously. Please monitor for updates, and change accordingly.
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 { | |
function isElevated() { | |
return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.perms > 0; | |
} | |
function checkEquals(index) { | |
return resource.data[index] == request.resource.data[index]; | |
} | |
match /users/{user} { | |
allow create: if request.auth != null && request.resource.data.perms == 0; | |
allow read: if request.auth != null; | |
allow delete: if request.auth.uid == user; | |
allow update: if request.resource.data.perms == 0 && (request.auth.uid == user || isElevated()); | |
} | |
match /classrooms/{classroom} { | |
allow read: if request.auth != null; | |
allow delete: if isElevated(); | |
allow create: if isElevated(); | |
allow update: if isElevated() || (checkEquals('created') && checkEquals('name') && checkEquals('owner') && request.auth != null); | |
} | |
match /tasks/{task} { | |
function isCreatedByAuthUser() { | |
return resource.data.createdBy == request.auth.uid; | |
} | |
allow read: if resource.data.type == 0 || isCreatedByAuthUser() || isElevated(); | |
allow create: if isElevated() || request.resource.data.type == 1 || request.resource.data.type == 2; | |
allow delete: if isElevated(); | |
allow update: if (isCreatedByAuthUser() || isElevated()) && checkEquals('type') && checkEquals('created'); | |
match /statusUpdates/{statusUpdate} { | |
allow read: if isElevated(); | |
allow create: if get(/databases/$(database)/documents/tasks/$(task)).data.createdBy == request.auth.uid || isElevated(); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment