aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Share20/Share.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/Share20/Share.php')
-rw-r--r--lib/private/Share20/Share.php17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php
index c361f01216f..f56fd94b409 100644
--- a/lib/private/Share20/Share.php
+++ b/lib/private/Share20/Share.php
@@ -24,8 +24,7 @@ use OCP\Files\File;
use OCP\Files\IRootFolder;
use OCP\Files\Node;
use OCP\Files\NotFoundException;
-use OCP\IUser;
-use OCP\IGroup;
+use OCP\IUserManager;
use OCP\Share\Exceptions\IllegalIDChangeException;
class Share implements \OCP\Share\IShare {
@@ -68,8 +67,12 @@ class Share implements \OCP\Share\IShare {
/** @var IRootFolder */
private $rootFolder;
- public function __construct(IRootFolder $rootFolder) {
+ /** @var IUserManager */
+ private $userManager;
+
+ public function __construct(IRootFolder $rootFolder, IUserManager $userManager) {
$this->rootFolder = $rootFolder;
+ $this->userManager = $userManager;
}
/**
@@ -145,7 +148,13 @@ class Share implements \OCP\Share\IShare {
throw new NotFoundException();
}
- $userFolder = $this->rootFolder->getUserFolder($this->shareOwner);
+ // for federated shares the owner can be a remote user, in this
+ // case we use the initiator
+ if($this->userManager->userExists($this->shareOwner)) {
+ $userFolder = $this->rootFolder->getUserFolder($this->shareOwner);
+ } else {
+ $userFolder = $this->rootFolder->getUserFolder($this->sharedBy);
+ }
$nodes = $userFolder->getById($this->fileId);
if (empty($nodes)) {