Merge pull request #50560 from nextcloud/backport/50519/stable31

[stable31] fix: Exclude non accepted shares when computing access list
This commit is contained in:
Andy Scherzinger 2025-01-30 12:07:19 +01:00 committed by GitHub
commit 23ac20347b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 0 deletions

View file

@ -1343,6 +1343,18 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
$qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
$qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
));
// Ensure accepted is true for user and usergroup type
$qb->andWhere(
$qb->expr()->orX(
$qb->expr()->andX(
$qb->expr()->neq('share_type', $qb->createNamedParameter(IShare::TYPE_USER)),
$qb->expr()->neq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)),
),
$qb->expr()->eq('accepted', $qb->createNamedParameter(IShare::STATUS_ACCEPTED, IQueryBuilder::PARAM_INT)),
),
);
$cursor = $qb->executeQuery();
$users = [];

View file

@ -2702,6 +2702,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setShareType(IShare::TYPE_USER)
->setPermissions(\OCP\Constants::PERMISSION_ALL);
$share1 = $this->provider->create($share1);
$share1 = $provider->acceptShare($share1, $u2->getUid());
$share2 = $shareManager->newShare();
$share2->setNode($folder2)
@ -2714,6 +2715,9 @@ class DefaultShareProviderTest extends \Test\TestCase {
$shareManager->deleteFromSelf($share2, $u4->getUID());
$share2 = $provider->acceptShare($share2, $u3->getUid());
$share2 = $provider->acceptShare($share2, $u4->getUid());
$share3 = $shareManager->newShare();
$share3->setNode($file1)
->setSharedBy($u3->getUID())
@ -2730,6 +2734,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setShareType(IShare::TYPE_USER)
->setPermissions(\OCP\Constants::PERMISSION_READ);
$share4 = $this->provider->create($share4);
$share4 = $provider->acceptShare($share4, $u5->getUid());
$result = $provider->getAccessList([$folder1, $folder2, $file1], false);
@ -2800,6 +2805,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setShareType(IShare::TYPE_USER)
->setPermissions(\OCP\Constants::PERMISSION_ALL);
$share1 = $this->provider->create($share1);
$share1 = $provider->acceptShare($share1, $u2->getUid());
$share2 = $shareManager->newShare();
$share2->setNode($folder2)
@ -2809,6 +2815,8 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setShareType(IShare::TYPE_GROUP)
->setPermissions(\OCP\Constants::PERMISSION_ALL);
$share2 = $this->provider->create($share2);
$share2 = $provider->acceptShare($share2, $u3->getUid());
$share2 = $provider->acceptShare($share2, $u4->getUid());
$shareManager->deleteFromSelf($share2, $u4->getUID());
@ -2828,6 +2836,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
->setShareType(IShare::TYPE_USER)
->setPermissions(\OCP\Constants::PERMISSION_READ);
$share4 = $this->provider->create($share4);
$share4 = $provider->acceptShare($share4, $u5->getUid());
$result = $provider->getAccessList([$folder1, $folder2, $file1], true);