fix(encryption): Correctly set encrypted to 0 when copying

If encryption got disabled, copying should set encrypted to 0 for the
 new unencrypted copy. For instance when using encryption:decrypt-all

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
Côme Chilliet 2025-09-02 16:52:24 +02:00 committed by Andy Scherzinger
parent 419711cd85
commit feef3cfa7d
2 changed files with 11 additions and 2 deletions

View file

@ -655,6 +655,13 @@ class Cache implements ICache {
return $this->storage->instanceOfStorage(Encryption::class);
}
protected function shouldEncrypt(string $targetPath): bool {
if (!$this->storage->instanceOfStorage(Encryption::class)) {
return false;
}
return $this->storage->shouldEncrypt($targetPath);
}
/**
* Move a file or folder in the cache
*
@ -1173,7 +1180,9 @@ class Cache implements ICache {
$data = $this->cacheEntryToArray($sourceEntry);
// when moving from an encrypted storage to a non-encrypted storage remove the `encrypted` mark
if ($sourceCache instanceof Cache && $sourceCache->hasEncryptionWrapper() && !$this->hasEncryptionWrapper()) {
if ($sourceCache instanceof Cache
&& $sourceCache->hasEncryptionWrapper()
&& !$this->shouldEncrypt($targetPath)) {
$data['encrypted'] = 0;
}

View file

@ -884,7 +884,7 @@ class Encryption extends Wrapper {
/**
* check if the given storage should be encrypted or not
*/
protected function shouldEncrypt(string $path): bool {
public function shouldEncrypt(string $path): bool {
$fullPath = $this->getFullPath($path);
$mountPointConfig = $this->mount->getOption('encrypt', true);
if ($mountPointConfig === false) {