diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2016-01-27 16:16:06 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2016-01-27 16:16:06 +0100 |
commit | 6973718fb8cb8d5c5c27690675079b2ef574abd1 (patch) | |
tree | f696647f8530d84f9b6700b2e5705fd33301b7c2 | |
parent | 05bff25cf3611837da86ea68d050d070cc0a4213 (diff) | |
parent | a4900d721f466540987f2770b5cf66aa95164c85 (diff) | |
download | nextcloud-server-6973718fb8cb8d5c5c27690675079b2ef574abd1.tar.gz nextcloud-server-6973718fb8cb8d5c5c27690675079b2ef574abd1.zip |
Merge pull request #21940 from owncloud/share2_do_not_returned_removed_group_shares
[Share 2.0] Properly handle user deleted group shares
-rw-r--r-- | apps/files_sharing/api/share20ocs.php | 9 | ||||
-rw-r--r-- | lib/private/share20/defaultshareprovider.php | 2 | ||||
-rw-r--r-- | tests/lib/share20/defaultshareprovidertest.php | 14 |
3 files changed, 16 insertions, 9 deletions
diff --git a/apps/files_sharing/api/share20ocs.php b/apps/files_sharing/api/share20ocs.php index c5e7dcff824..3048eb7cd1a 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 fb2acb56a73..117d56acf93 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 79cc92116be..f86d4df948d 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() { |