Merge pull request #56501 from nextcloud/fix/lookup-trusted-server-filter

fix(sharing): Add isTrustedServer flag to lookup results
pull/40208/merge
F. E Noel Nfebe 2025-11-25 09:44:27 +07:00 committed by GitHub
commit 80b04bd8d2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 37 additions and 10 deletions

@ -6,6 +6,7 @@
*/ */
namespace OC\Collaboration\Collaborators; namespace OC\Collaboration\Collaborators;
use OCA\Federation\TrustedServers;
use OCP\Collaboration\Collaborators\ISearchPlugin; use OCP\Collaboration\Collaborators\ISearchPlugin;
use OCP\Collaboration\Collaborators\ISearchResult; use OCP\Collaboration\Collaborators\ISearchResult;
use OCP\Collaboration\Collaborators\SearchResultType; use OCP\Collaboration\Collaborators\SearchResultType;
@ -26,6 +27,7 @@ class LookupPlugin implements ISearchPlugin {
IUserSession $userSession, IUserSession $userSession,
private ICloudIdManager $cloudIdManager, private ICloudIdManager $cloudIdManager,
private LoggerInterface $logger, private LoggerInterface $logger,
private ?TrustedServers $trustedServers,
) { ) {
$currentUserCloudId = $userSession->getUser()->getCloudId(); $currentUserCloudId = $userSession->getUser()->getCloudId();
$this->currentUserRemote = $cloudIdManager->resolveCloudId($currentUserCloudId)->getRemote(); $this->currentUserRemote = $cloudIdManager->resolveCloudId($currentUserCloudId)->getRemote();
@ -82,6 +84,8 @@ class LookupPlugin implements ISearchPlugin {
'shareType' => IShare::TYPE_REMOTE, 'shareType' => IShare::TYPE_REMOTE,
'globalScale' => $isGlobalScaleEnabled, 'globalScale' => $isGlobalScaleEnabled,
'shareWith' => $lookup['federationId'], 'shareWith' => $lookup['federationId'],
'server' => $remote,
'isTrustedServer' => $this->trustedServers?->isTrustedServer($remote) ?? false,
], ],
'extra' => $lookup, 'extra' => $lookup,
]; ];

@ -57,6 +57,10 @@ class LookupPluginTest extends TestCase {
if ($cloudId === 'user@myNextcloud.net') { if ($cloudId === 'user@myNextcloud.net') {
return new CloudId('user@myNextcloud.net', 'user', 'myNextcloud.net'); return new CloudId('user@myNextcloud.net', 'user', 'myNextcloud.net');
} }
if (str_contains($cloudId, '@enceladus.moon')) {
[$user, $remote] = explode('@', $cloudId, 2);
return new CloudId($cloudId, $user, $remote);
}
return new CloudId('user@someNextcloud.net', 'user', 'someNextcloud.net'); return new CloudId('user@someNextcloud.net', 'user', 'someNextcloud.net');
}); });
@ -66,7 +70,8 @@ class LookupPluginTest extends TestCase {
$this->clientService, $this->clientService,
$this->userSession, $this->userSession,
$this->cloudIdManager, $this->cloudIdManager,
$this->logger $this->logger,
null
); );
} }
@ -286,7 +291,9 @@ class LookupPluginTest extends TestCase {
'value' => [ 'value' => [
'shareType' => IShare::TYPE_REMOTE, 'shareType' => IShare::TYPE_REMOTE,
'globalScale' => true, 'globalScale' => true,
'shareWith' => $fedIDs[0] 'shareWith' => $fedIDs[0],
'server' => 'enceladus.moon',
'isTrustedServer' => false,
], ],
'extra' => ['federationId' => $fedIDs[0]], 'extra' => ['federationId' => $fedIDs[0]],
], ],
@ -295,7 +302,9 @@ class LookupPluginTest extends TestCase {
'value' => [ 'value' => [
'shareType' => IShare::TYPE_REMOTE, 'shareType' => IShare::TYPE_REMOTE,
'globalScale' => true, 'globalScale' => true,
'shareWith' => $fedIDs[1] 'shareWith' => $fedIDs[1],
'server' => 'enceladus.moon',
'isTrustedServer' => false,
], ],
'extra' => ['federationId' => $fedIDs[1]], 'extra' => ['federationId' => $fedIDs[1]],
], ],
@ -304,7 +313,9 @@ class LookupPluginTest extends TestCase {
'value' => [ 'value' => [
'shareType' => IShare::TYPE_REMOTE, 'shareType' => IShare::TYPE_REMOTE,
'globalScale' => true, 'globalScale' => true,
'shareWith' => $fedIDs[2] 'shareWith' => $fedIDs[2],
'server' => 'enceladus.moon',
'isTrustedServer' => false,
], ],
'extra' => ['federationId' => $fedIDs[2]], 'extra' => ['federationId' => $fedIDs[2]],
], ],
@ -328,7 +339,9 @@ class LookupPluginTest extends TestCase {
'value' => [ 'value' => [
'shareType' => IShare::TYPE_REMOTE, 'shareType' => IShare::TYPE_REMOTE,
'globalScale' => true, 'globalScale' => true,
'shareWith' => $fedIDs[0] 'shareWith' => $fedIDs[0],
'server' => 'enceladus.moon',
'isTrustedServer' => false,
], ],
'extra' => ['federationId' => $fedIDs[0]], 'extra' => ['federationId' => $fedIDs[0]],
], ],
@ -337,7 +350,9 @@ class LookupPluginTest extends TestCase {
'value' => [ 'value' => [
'shareType' => IShare::TYPE_REMOTE, 'shareType' => IShare::TYPE_REMOTE,
'globalScale' => true, 'globalScale' => true,
'shareWith' => $fedIDs[1] 'shareWith' => $fedIDs[1],
'server' => 'enceladus.moon',
'isTrustedServer' => false,
], ],
'extra' => ['federationId' => $fedIDs[1]], 'extra' => ['federationId' => $fedIDs[1]],
], ],
@ -346,7 +361,9 @@ class LookupPluginTest extends TestCase {
'value' => [ 'value' => [
'shareType' => IShare::TYPE_REMOTE, 'shareType' => IShare::TYPE_REMOTE,
'globalScale' => true, 'globalScale' => true,
'shareWith' => $fedIDs[2] 'shareWith' => $fedIDs[2],
'server' => 'enceladus.moon',
'isTrustedServer' => false,
], ],
'extra' => ['federationId' => $fedIDs[2]], 'extra' => ['federationId' => $fedIDs[2]],
], ],
@ -460,7 +477,9 @@ class LookupPluginTest extends TestCase {
'value' => [ 'value' => [
'shareType' => IShare::TYPE_REMOTE, 'shareType' => IShare::TYPE_REMOTE,
'globalScale' => true, 'globalScale' => true,
'shareWith' => $fedIDs[0] 'shareWith' => $fedIDs[0],
'server' => 'enceladus.moon',
'isTrustedServer' => false,
], ],
'extra' => ['federationId' => $fedIDs[0]], 'extra' => ['federationId' => $fedIDs[0]],
], ],
@ -469,7 +488,9 @@ class LookupPluginTest extends TestCase {
'value' => [ 'value' => [
'shareType' => IShare::TYPE_REMOTE, 'shareType' => IShare::TYPE_REMOTE,
'globalScale' => true, 'globalScale' => true,
'shareWith' => $fedIDs[1] 'shareWith' => $fedIDs[1],
'server' => 'enceladus.moon',
'isTrustedServer' => false,
], ],
'extra' => ['federationId' => $fedIDs[1]], 'extra' => ['federationId' => $fedIDs[1]],
], ],
@ -478,7 +499,9 @@ class LookupPluginTest extends TestCase {
'value' => [ 'value' => [
'shareType' => IShare::TYPE_REMOTE, 'shareType' => IShare::TYPE_REMOTE,
'globalScale' => true, 'globalScale' => true,
'shareWith' => $fedIDs[2] 'shareWith' => $fedIDs[2],
'server' => 'enceladus.moon',
'isTrustedServer' => false,
], ],
'extra' => ['federationId' => $fedIDs[2]], 'extra' => ['federationId' => $fedIDs[2]],
], ],