Skip to content

Commit 9626ff8

Browse files
committed
fix: Exclude non accepted shares when computing access list
Signed-off-by: Louis Chemineau <louis@chmn.me>
1 parent 2927075 commit 9626ff8

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

lib/private/Share20/DefaultShareProvider.php

+13
Original file line numberDiff line numberDiff line change
@@ -1399,6 +1399,19 @@ public function getAccessList($nodes, $currentAccess) {
13991399
$qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
14001400
$qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
14011401
));
1402+
1403+
// Ensure accepted is true for user and usergroup type
1404+
$qb->andWhere(
1405+
$qb->expr()->orX(
1406+
$qb->expr()->andX(
1407+
$qb->expr()->neq('share_type', $qb->createNamedParameter(IShare::TYPE_USER)),
1408+
$qb->expr()->neq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)),
1409+
),
1410+
$qb->expr()->eq('accepted', $qb->createNamedParameter(IShare::STATUS_ACCEPTED, IQueryBuilder::PARAM_INT)),
1411+
),
1412+
);
1413+
1414+
14021415
$cursor = $qb->execute();
14031416

14041417
$users = [];

tests/lib/Share20/DefaultShareProviderTest.php

+9
Original file line numberDiff line numberDiff line change
@@ -2698,6 +2698,7 @@ public function testGetAccessListNoCurrentAccessRequired() {
26982698
->setShareType(IShare::TYPE_USER)
26992699
->setPermissions(\OCP\Constants::PERMISSION_ALL);
27002700
$share1 = $this->provider->create($share1);
2701+
$share1 = $provider->acceptShare($share1, $u2->getUid());
27012702

27022703
$share2 = $shareManager->newShare();
27032704
$share2->setNode($folder2)
@@ -2710,6 +2711,9 @@ public function testGetAccessListNoCurrentAccessRequired() {
27102711

27112712
$shareManager->deleteFromSelf($share2, $u4->getUID());
27122713

2714+
$share2 = $provider->acceptShare($share2, $u3->getUid());
2715+
$share2 = $provider->acceptShare($share2, $u4->getUid());
2716+
27132717
$share3 = $shareManager->newShare();
27142718
$share3->setNode($file1)
27152719
->setSharedBy($u3->getUID())
@@ -2726,6 +2730,7 @@ public function testGetAccessListNoCurrentAccessRequired() {
27262730
->setShareType(IShare::TYPE_USER)
27272731
->setPermissions(\OCP\Constants::PERMISSION_READ);
27282732
$share4 = $this->provider->create($share4);
2733+
$share4 = $provider->acceptShare($share4, $u5->getUid());
27292734

27302735
$result = $provider->getAccessList([$folder1, $folder2, $file1], false);
27312736

@@ -2795,6 +2800,7 @@ public function testGetAccessListCurrentAccessRequired() {
27952800
->setShareType(IShare::TYPE_USER)
27962801
->setPermissions(\OCP\Constants::PERMISSION_ALL);
27972802
$share1 = $this->provider->create($share1);
2803+
$share1 = $provider->acceptShare($share1, $u2->getUid());
27982804

27992805
$share2 = $shareManager->newShare();
28002806
$share2->setNode($folder2)
@@ -2804,6 +2810,8 @@ public function testGetAccessListCurrentAccessRequired() {
28042810
->setShareType(IShare::TYPE_GROUP)
28052811
->setPermissions(\OCP\Constants::PERMISSION_ALL);
28062812
$share2 = $this->provider->create($share2);
2813+
$share2 = $provider->acceptShare($share2, $u3->getUid());
2814+
$share2 = $provider->acceptShare($share2, $u4->getUid());
28072815

28082816
$shareManager->deleteFromSelf($share2, $u4->getUID());
28092817

@@ -2823,6 +2831,7 @@ public function testGetAccessListCurrentAccessRequired() {
28232831
->setShareType(IShare::TYPE_USER)
28242832
->setPermissions(\OCP\Constants::PERMISSION_READ);
28252833
$share4 = $this->provider->create($share4);
2834+
$share4 = $provider->acceptShare($share4, $u5->getUid());
28262835

28272836
$result = $provider->getAccessList([$folder1, $folder2, $file1], true);
28282837

0 commit comments

Comments
 (0)