diff --git a/packages/syncing-server/src/Bootstrap/ServerContainerConfigLoader.ts b/packages/syncing-server/src/Bootstrap/ServerContainerConfigLoader.ts index 8147365f6..8372a0885 100644 --- a/packages/syncing-server/src/Bootstrap/ServerContainerConfigLoader.ts +++ b/packages/syncing-server/src/Bootstrap/ServerContainerConfigLoader.ts @@ -265,12 +265,12 @@ export class ServerContainerConfigLoader extends CommonContainerConfigLoader { .bind(TYPES.ItemSaveValidator) .toDynamicValue((context: interfaces.Context) => { return new ItemSaveValidator([ + context.container.get(TYPES.SnjsVersionFilter), context.container.get(TYPES.OwnershipFilter), context.container.get(TYPES.TimeDifferenceFilter), context.container.get(TYPES.UuidFilter), context.container.get(TYPES.ContentTypeFilter), context.container.get(TYPES.ContentFilter), - context.container.get(TYPES.SnjsVersionFilter), ]) }) diff --git a/packages/syncing-server/src/Domain/Item/SaveRule/OwnershipFilter.ts b/packages/syncing-server/src/Domain/Item/SaveRule/OwnershipFilter.ts index aa8796b7b..5613cb38d 100644 --- a/packages/syncing-server/src/Domain/Item/SaveRule/OwnershipFilter.ts +++ b/packages/syncing-server/src/Domain/Item/SaveRule/OwnershipFilter.ts @@ -51,7 +51,10 @@ export class OwnershipFilter implements ItemSaveRuleInterface { const isItemBeingRemovedFromGroup = dto.existingItem != null && dto.existingItem.groupUuid != null && dto.itemHash.group_uuid == null - if (isItemBeingRemovedFromGroup) { + + const isItemBeingDeleted = dto.itemHash.deleted === true + + if (isItemBeingRemovedFromGroup || isItemBeingDeleted) { return groupAuthorization === 'admin' ? successValue : groupReadonlyFail }