diff options
author | Côme Chilliet <come.chilliet@nextcloud.com> | 2023-08-03 16:13:38 +0200 |
---|---|---|
committer | backportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com> | 2023-08-28 13:50:26 +0000 |
commit | 98fa5fe627b1acb12aa5d85f9e4aad05d6c063b7 (patch) | |
tree | 13c4d1a50116f9bea52f3e1958b14c6a542a2661 | |
parent | 68ae8706d83f726e4189059516008aa2a8863429 (diff) | |
download | nextcloud-server-98fa5fe627b1acb12aa5d85f9e4aad05d6c063b7.tar.gz nextcloud-server-98fa5fe627b1acb12aa5d85f9e4aad05d6c063b7.zip |
Set files_sharing:hide_disabled_user_shares to 'yes' to hide shares from disabled users
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
-rw-r--r-- | lib/private/Share20/Manager.php | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 732bd5bb97d..b03d304aa1e 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -1352,7 +1352,7 @@ class Manager implements IManager { $added = 0; foreach ($shares as $share) { try { - $this->checkExpireDate($share); + $this->checkShare($share); } catch (ShareNotFound $e) { //Ignore since this basically means the share is deleted continue; @@ -1411,7 +1411,7 @@ class Manager implements IManager { // remove all shares which are already expired foreach ($shares as $key => $share) { try { - $this->checkExpireDate($share); + $this->checkShare($share); } catch (ShareNotFound $e) { unset($shares[$key]); } @@ -1457,7 +1457,7 @@ class Manager implements IManager { $share = $provider->getShareById($id, $recipient); - $this->checkExpireDate($share); + $this->checkShare($share); return $share; } @@ -1541,7 +1541,7 @@ class Manager implements IManager { throw new ShareNotFound($this->l->t('The requested share does not exist anymore')); } - $this->checkExpireDate($share); + $this->checkShare($share); /* * Reduce the permissions for link or email shares if public upload is not enabled @@ -1554,11 +1554,25 @@ class Manager implements IManager { return $share; } - protected function checkExpireDate($share) { + /** + * Check expire date and disabled owner + * + * @throws ShareNotFound + */ + protected function checkShare(IShare $share): void { if ($share->isExpired()) { $this->deleteShare($share); throw new ShareNotFound($this->l->t('The requested share does not exist anymore')); } + if ($this->config->getAppValue('files_sharing', 'hide_disabled_user_shares', 'no') === 'yes') { + $uids = array_unique([$share->getShareOwner(),$share->getSharedBy()]); + foreach ($uids as $uid) { + $user = $this->userManager->get($uid); + if (($user !== null) && !$user->isEnabled()) { + throw new ShareNotFound($this->l->t('The requested share comes from a disabled user')); + } + } + } } /** |