diff --git a/apps/files_sharing/api/share20ocs.php b/apps/files_sharing/api/share20ocs.php index c5e7dcff82..3048eb7cd1 100644 --- a/apps/files_sharing/api/share20ocs.php +++ b/apps/files_sharing/api/share20ocs.php @@ -335,7 +335,9 @@ class Share20OCS { $formatted = []; foreach ($shares as $share) { - $formatted[] = $this->formatShare($share); + if ($this->canAccessShare($share)) { + $formatted[] = $this->formatShare($share); + } } return new \OC_OCS_Result($formatted); @@ -496,6 +498,11 @@ class Share20OCS { * @return bool */ protected function canAccessShare(IShare $share) { + // A file with permissions 0 can't be accessed by us. So Don't show it + if ($share->getPermissions() === 0) { + return false; + } + // Owner of the file and the sharer of the file can always get share if ($share->getShareOwner() === $this->currentUser || $share->getSharedBy() === $this->currentUser diff --git a/lib/private/share20/defaultshareprovider.php b/lib/private/share20/defaultshareprovider.php index fb2acb56a7..117d56acf9 100644 --- a/lib/private/share20/defaultshareprovider.php +++ b/lib/private/share20/defaultshareprovider.php @@ -760,7 +760,7 @@ class DefaultShareProvider implements IShareProvider { $stmt->closeCursor(); if ($data !== false) { - $share->setPermissions($data['permissions']); + $share->setPermissions((int)$data['permissions']); $share->setTarget($data['file_target']); } diff --git a/tests/lib/share20/defaultshareprovidertest.php b/tests/lib/share20/defaultshareprovidertest.php index 79cc92116b..f86d4df948 100644 --- a/tests/lib/share20/defaultshareprovidertest.php +++ b/tests/lib/share20/defaultshareprovidertest.php @@ -981,13 +981,13 @@ class DefaultShareProviderTest extends \Test\TestCase { $this->assertCount(1, $share); $share = $share[0]; - $this->assertEquals($id, $share->getId()); - $this->assertEquals($group, $share->getSharedWith()); - $this->assertEquals($owner, $share->getShareOwner()); - $this->assertEquals($initiator, $share->getSharedBy()); - $this->assertEquals(\OCP\Share::SHARE_TYPE_GROUP, $share->getShareType()); - $this->assertEquals(0, $share->getPermissions()); - $this->assertEquals('userTarget', $share->getTarget()); + $this->assertSame($id, $share->getId()); + $this->assertSame($group, $share->getSharedWith()); + $this->assertSame($owner, $share->getShareOwner()); + $this->assertSame($initiator, $share->getSharedBy()); + $this->assertSame(\OCP\Share::SHARE_TYPE_GROUP, $share->getShareType()); + $this->assertSame(0, $share->getPermissions()); + $this->assertSame('userTarget', $share->getTarget()); } public function testGetSharesBy() {