[FIX] set vocab could be deleted when set couldn't

This commit is contained in:
2021-10-26 16:29:38 +01:00
parent c80905dba9
commit cd37698066

View File

@@ -18,6 +18,11 @@ service cloud.firestore {
return get(/databases/$(database)/documents/sets/$(setId)).data.owner == request.auth.uid; return get(/databases/$(database)/documents/sets/$(setId)).data.owner == request.auth.uid;
} }
function isSetOwnerAndHasNoGroups(setId) {
let data = get(/databases/$(database)/documents/sets/$(setId)).data;
return data.owner == request.auth.uid && (data == null || data.groups == null || data.groups == []);
}
function isSetOwnerOrIsPublic(setId) { function isSetOwnerOrIsPublic(setId) {
let data = get(/databases/$(database)/documents/sets/$(setId)).data; let data = get(/databases/$(database)/documents/sets/$(setId)).data;
return data.public || data.owner == request.auth.uid; return data.public || data.owner == request.auth.uid;
@@ -190,7 +195,7 @@ service cloud.firestore {
allow read: if isSignedIn() && isSetOwnerOrIsPublic(setId); allow read: if isSignedIn() && isSetOwnerOrIsPublic(setId);
allow create: if isSignedIn() && isSetOwner(setId) && verifyCreateFields(getPossibleCreateFields()) && verifyVocabFieldTypes(); allow create: if isSignedIn() && isSetOwner(setId) && verifyCreateFields(getPossibleCreateFields()) && verifyVocabFieldTypes();
allow update: if isSignedIn() && isSetOwner(setId) && verifyUpdateFields(getPossibleUpdateFields()) && verifyVocabFieldTypes(); allow update: if isSignedIn() && isSetOwner(setId) && verifyUpdateFields(getPossibleUpdateFields()) && verifyVocabFieldTypes();
allow delete: if isSignedIn() && isSetOwner(setId); allow delete: if isSignedIn() && isSetOwnerAndHasNoGroups(setId);
} }
} }