diff options
-rw-r--r-- | lib/private/Files/Node/Folder.php | 7 | ||||
-rw-r--r-- | tests/lib/Files/Node/FolderTest.php | 21 |
2 files changed, 20 insertions, 8 deletions
diff --git a/lib/private/Files/Node/Folder.php b/lib/private/Files/Node/Folder.php index b0569a24aa1..19f04048779 100644 --- a/lib/private/Files/Node/Folder.php +++ b/lib/private/Files/Node/Folder.php @@ -442,8 +442,13 @@ class Folder extends Node implements \OCP\Files\Folder { }, $result)); return array_values(array_filter($files, function (Node $node) { + $cacheEntry = $node->getMountPoint()->getStorage()->getCache()->get($node->getId()); + if (!$cacheEntry) { + return false; + } $relative = $this->getRelativePath($node->getPath()); - return $relative !== null && $relative !== '/'; + return $relative !== null && $relative !== '/' + && ($cacheEntry->getPermissions() & \OCP\Constants::PERMISSION_READ) === \OCP\Constants::PERMISSION_READ; })); } diff --git a/tests/lib/Files/Node/FolderTest.php b/tests/lib/Files/Node/FolderTest.php index daac67cae23..3390d19feb7 100644 --- a/tests/lib/Files/Node/FolderTest.php +++ b/tests/lib/Files/Node/FolderTest.php @@ -810,13 +810,15 @@ class FolderTest extends NodeTest { 'storage_mtime' => $baseTime, 'mtime' => $baseTime, 'mimetype' => 'text/plain', - 'size' => 3 + 'size' => 3, + 'permissions' => \OCP\Constants::PERMISSION_ALL ]); $id2 = $cache->put('bar/foo/old.txt', [ 'storage_mtime' => $baseTime - 100, 'mtime' => $baseTime - 100, 'mimetype' => 'text/plain', - 'size' => 3 + 'size' => 3, + 'permissions' => \OCP\Constants::PERMISSION_READ ]); $cache->put('bar/asd/outside.txt', [ 'storage_mtime' => $baseTime, @@ -828,7 +830,8 @@ class FolderTest extends NodeTest { 'storage_mtime' => $baseTime - 600, 'mtime' => $baseTime - 600, 'mimetype' => 'text/plain', - 'size' => 3 + 'size' => 3, + 'permissions' => \OCP\Constants::PERMISSION_ALL ]); $node = new \OC\Files\Node\Folder($root, $view, $folderPath, $folderInfo); @@ -871,21 +874,24 @@ class FolderTest extends NodeTest { 'storage_mtime' => $baseTime, 'mtime' => $baseTime, 'mimetype' => \OCP\Files\FileInfo::MIMETYPE_FOLDER, - 'size' => 3 + 'size' => 3, + 'permissions' => 0 ]); $id2 = $cache->put('bar/foo/folder/bar.txt', [ 'storage_mtime' => $baseTime, 'mtime' => $baseTime, 'mimetype' => 'text/plain', 'size' => 3, - 'parent' => $id1 + 'parent' => $id1, + 'permissions' => \OCP\Constants::PERMISSION_ALL ]); $id3 = $cache->put('bar/foo/folder/asd.txt', [ 'storage_mtime' => $baseTime - 100, 'mtime' => $baseTime - 100, 'mimetype' => 'text/plain', 'size' => 3, - 'parent' => $id1 + 'parent' => $id1, + 'permissions' => \OCP\Constants::PERMISSION_ALL ]); $node = new \OC\Files\Node\Folder($root, $view, $folderPath, $folderInfo); @@ -934,7 +940,8 @@ class FolderTest extends NodeTest { 'storage_mtime' => $baseTime, 'mtime' => $baseTime, 'mimetype' => 'text/plain', - 'size' => 3 + 'size' => 3, + 'permissions' => \OCP\Constants::PERMISSION_ALL ]); $cache->put('outside.txt', [ 'storage_mtime' => $baseTime - 100, |