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

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