summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCôme Chilliet <come.chilliet@nextcloud.com>2023-08-03 16:13:38 +0200
committerbackportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com>2023-08-28 13:50:26 +0000
commit98fa5fe627b1acb12aa5d85f9e4aad05d6c063b7 (patch)
tree13c4d1a50116f9bea52f3e1958b14c6a542a2661
parent68ae8706d83f726e4189059516008aa2a8863429 (diff)
downloadnextcloud-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.php24
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'));
+ }
+ }
+ }
}
/**