diff options
author | Julius Härtl <jus@bitgrid.net> | 2019-08-27 17:31:29 +0300 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2019-08-27 19:36:24 +0300 |
commit | 28313a94bc221a41f499a7e71af2298669be2faa (patch) | |
tree | c7ef4c0103543198ef68257c9de7ca4c21e311ae | |
parent | 9ac15bc4e9d78c77d982bb017034c8ac1d8e4b54 (diff) |
WIP: Check if the share owner is still a valid userbugfix/noid/share-owner-missing
Signed-off-by: Julius Härtl <jus@bitgrid.net>
-rw-r--r-- | lib/private/Share20/DefaultShareProvider.php | 25 | ||||
-rw-r--r-- | lib/private/Share20/Manager.php | 3 | ||||
-rw-r--r-- | lib/private/Share20/Share.php | 4 |
3 files changed, 26 insertions, 6 deletions
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php index aea50dfcdb6..a5689b28c35 100644 --- a/lib/private/Share20/DefaultShareProvider.php +++ b/lib/private/Share20/DefaultShareProvider.php @@ -597,7 +597,11 @@ class DefaultShareProvider implements IShareProvider { $cursor = $qb->execute(); $shares = []; while ($data = $cursor->fetch()) { - $shares[$data['fileid']][] = $this->createShare($data); + try { + $shares[$data['fileid']][] = $this->createShare($data); + } catch (\InvalidArgumentException $e) { + // ignore exception and leave out share + } } $cursor->closeCursor(); @@ -727,8 +731,11 @@ class DefaultShareProvider implements IShareProvider { $shares = []; while($data = $cursor->fetch()) { - $shares[] = $this->createShare($data); - } + try { + $shares[] = $this->createShare($data); + } catch (\InvalidArgumentException $e) { + // ignore exception and leave out share + } } $cursor->closeCursor(); return $shares; @@ -799,7 +806,11 @@ class DefaultShareProvider implements IShareProvider { while($data = $cursor->fetch()) { if ($this->isAccessibleResult($data)) { - $shares[] = $this->createShare($data); + try { + $shares[] = $this->createShare($data); + } catch (\InvalidArgumentException $e) { + // ignore exception and leave out share + } } } $cursor->closeCursor(); @@ -864,7 +875,11 @@ class DefaultShareProvider implements IShareProvider { } if ($this->isAccessibleResult($data)) { - $shares2[] = $this->createShare($data); + try { + $shares2[] = $this->createShare($data); + } catch (\InvalidArgumentException $e) { + // ignore exception and leave out share + } } } $cursor->closeCursor(); diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 2a2c64cf383..7e1ed382241 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -1173,6 +1173,9 @@ class Manager implements IManager { } catch (ShareNotFound $e) { unset($shares[$key]); } + if (!$this->userManager->userExists($share->getShareOwner())) { + unset($shares[$key]); + } } return $shares; diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php index f9b548c1adf..919a19a4eb4 100644 --- a/lib/private/Share20/Share.php +++ b/lib/private/Share20/Share.php @@ -396,7 +396,9 @@ class Share implements \OCP\Share\IShare { if (!is_string($shareOwner)) { throw new \InvalidArgumentException(); } - //TODO checks + if(!$this->userManager->userExists($this->shareOwner)) { + throw new \InvalidArgumentException('Share owner doesn\'t exist'); + } $this->shareOwner = $shareOwner; return $this; |