From 5da4e4dc537e9dba477c18eb71f6246fad43302d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Mon, 23 Jul 2018 09:47:24 +0200 Subject: [PATCH] Fix transfering ownership of a share to user with same id as receiver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the ownership of a user share is transfered to the receiver the share is removed, as the receiver now owns the original file. However, due to a missing condition, any share with a group, link or remote with the same id as the user was removed, not only the user shares. Signed-off-by: Daniel Calviño Sánchez --- apps/files/lib/Command/TransferOwnership.php | 3 ++- .../integration/features/transfer-ownership.feature | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/files/lib/Command/TransferOwnership.php b/apps/files/lib/Command/TransferOwnership.php index d175f66d17..6113f6df54 100644 --- a/apps/files/lib/Command/TransferOwnership.php +++ b/apps/files/lib/Command/TransferOwnership.php @@ -263,7 +263,8 @@ class TransferOwnership extends Command { foreach($this->shares as $share) { try { - if ($share->getSharedWith() === $this->destinationUser) { + if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER && + $share->getSharedWith() === $this->destinationUser) { // Unmount the shares before deleting, so we don't try to get the storage later on. $shareMountPoint = $this->mountManager->find('/' . $this->destinationUser . '/files' . $share->getTarget()); if ($shareMountPoint) { diff --git a/build/integration/features/transfer-ownership.feature b/build/integration/features/transfer-ownership.feature index 7990eac328..3f10fa75a8 100644 --- a/build/integration/features/transfer-ownership.feature +++ b/build/integration/features/transfer-ownership.feature @@ -72,6 +72,19 @@ Feature: transfer-ownership And As an "user2" Then Downloaded content when downloading file "/test/somefile.txt" with range "bytes=0-6" should be "This is" + Scenario: transfering ownership of file shares to user with the same id as the group + Given user "user0" exists + And user "test" exists + And user "user2" exists + And group "test" exists + And user "user2" belongs to group "test" + And User "user0" uploads file "data/textfile.txt" to "/somefile.txt" + And file "/somefile.txt" of user "user0" is shared with group "test" + When transfering ownership from "user0" to "test" + And the command was successful + And As an "user2" + Then Downloaded content when downloading file "/somefile.txt" with range "bytes=0-6" should be "This is" + Scenario: transfering ownership does not transfer received shares Given user "user0" exists And user "user1" exists