mirror of
https://github.com/nextcloud/server.git
synced 2026-04-05 00:56:16 -04:00
Merge 60e80ead20 into 8845606f81
This commit is contained in:
commit
0081eb2b95
2 changed files with 68 additions and 6 deletions
|
|
@ -1762,8 +1762,8 @@ class ShareAPIController extends OCSController {
|
|||
'sciencemesh' => IShare::TYPE_SCIENCEMESH,
|
||||
];
|
||||
|
||||
// Add federated sharing as a provider only if it's allowed
|
||||
if ($this->shareManager->outgoingServer2ServerSharesAllowed()) {
|
||||
// Include federated sharing whenever the provider is available for the user.
|
||||
if ($this->shareManager->shareProviderExists(IShare::TYPE_REMOTE)) {
|
||||
$providers['ocFederatedSharing'] = null; // No type check needed
|
||||
}
|
||||
|
||||
|
|
@ -1888,14 +1888,14 @@ class ShareAPIController extends OCSController {
|
|||
$shares = array_merge($shares, $providerShares);
|
||||
}
|
||||
|
||||
if ($this->shareManager->outgoingServer2ServerSharesAllowed()) {
|
||||
if ($this->shareManager->shareProviderExists(IShare::TYPE_REMOTE)) {
|
||||
$federatedShares = $this->shareManager->getSharesBy(
|
||||
$this->userId, IShare::TYPE_REMOTE, $node, $reShares, -1, 0
|
||||
);
|
||||
$shares = array_merge($shares, $federatedShares);
|
||||
}
|
||||
|
||||
if ($this->shareManager->outgoingServer2ServerGroupSharesAllowed()) {
|
||||
if ($this->shareManager->shareProviderExists(IShare::TYPE_REMOTE_GROUP)) {
|
||||
$federatedShares = $this->shareManager->getSharesBy(
|
||||
$this->userId, IShare::TYPE_REMOTE_GROUP, $node, $reShares, -1, 0
|
||||
);
|
||||
|
|
@ -2033,12 +2033,12 @@ class ShareAPIController extends OCSController {
|
|||
$sciencemeshShares = $this->shareManager->getSharesBy($this->userId, IShare::TYPE_SCIENCEMESH, $path, $reshares, -1, 0);
|
||||
|
||||
// FEDERATION
|
||||
if ($this->shareManager->outgoingServer2ServerSharesAllowed()) {
|
||||
if ($this->shareManager->shareProviderExists(IShare::TYPE_REMOTE)) {
|
||||
$federatedShares = $this->shareManager->getSharesBy($this->userId, IShare::TYPE_REMOTE, $path, $reshares, -1, 0);
|
||||
} else {
|
||||
$federatedShares = [];
|
||||
}
|
||||
if ($this->shareManager->outgoingServer2ServerGroupSharesAllowed()) {
|
||||
if ($this->shareManager->shareProviderExists(IShare::TYPE_REMOTE_GROUP)) {
|
||||
$federatedGroupShares = $this->shareManager->getSharesBy($this->userId, IShare::TYPE_REMOTE_GROUP, $path, $reshares, -1, 0);
|
||||
} else {
|
||||
$federatedGroupShares = [];
|
||||
|
|
|
|||
|
|
@ -1263,6 +1263,8 @@ class ShareAPIControllerTest extends TestCase {
|
|||
$file1EmailShareOwnerExpected,
|
||||
$file1CircleShareOwnerExpected,
|
||||
$file1RoomShareOwnerExpected,
|
||||
$file1RemoteShareOwnerExpected,
|
||||
$file1RemoteGroupShareOwnerExpected,
|
||||
]
|
||||
],
|
||||
[
|
||||
|
|
@ -1433,6 +1435,8 @@ class ShareAPIControllerTest extends TestCase {
|
|||
$file1EmailShareOwnerExpected,
|
||||
$file1CircleShareOwnerExpected,
|
||||
$file1RoomShareOwnerExpected,
|
||||
$file1RemoteShareOwnerExpected,
|
||||
$file1RemoteGroupShareOwnerExpected,
|
||||
]
|
||||
],
|
||||
[
|
||||
|
|
@ -2068,6 +2072,64 @@ class ShareAPIControllerTest extends TestCase {
|
|||
$this->ocs->createShare('valid-path', Constants::PERMISSION_ALL, IShare::TYPE_GROUP, 'invalidGroup');
|
||||
}
|
||||
|
||||
public function testGetFederatedShareWhenOutgoingFederationDisabled(): void {
|
||||
$share = $this->createMock(IShare::class);
|
||||
$share->method('getId')->willReturn('42');
|
||||
$share->method('getShareType')->willReturn(IShare::TYPE_REMOTE);
|
||||
|
||||
/** @var ShareAPIController&MockObject $ocs */
|
||||
$ocs = $this->getMockBuilder(ShareAPIController::class)
|
||||
->setConstructorArgs([
|
||||
$this->appName,
|
||||
$this->request,
|
||||
$this->shareManager,
|
||||
$this->groupManager,
|
||||
$this->userManager,
|
||||
$this->rootFolder,
|
||||
$this->urlGenerator,
|
||||
$this->l,
|
||||
$this->config,
|
||||
$this->appConfig,
|
||||
$this->appManager,
|
||||
$this->serverContainer,
|
||||
$this->userStatusManager,
|
||||
$this->previewManager,
|
||||
$this->dateTimeZone,
|
||||
$this->logger,
|
||||
$this->factory,
|
||||
$this->mailer,
|
||||
$this->tagManager,
|
||||
$this->trustedServers,
|
||||
$this->currentUser,
|
||||
])
|
||||
->onlyMethods(['canAccessShare', 'formatShare'])
|
||||
->getMock();
|
||||
|
||||
$ocs->method('canAccessShare')->willReturn(true);
|
||||
$ocs->method('formatShare')->with($share)->willReturn([
|
||||
'id' => '42',
|
||||
'share_type' => IShare::TYPE_REMOTE,
|
||||
]);
|
||||
|
||||
$this->shareManager
|
||||
->method('getShareById')
|
||||
->willReturnCallback(function (string $id, string $recipient) use ($share) {
|
||||
$this->assertSame($this->currentUser, $recipient);
|
||||
if ($id === 'ocFederatedSharing:42') {
|
||||
return $share;
|
||||
}
|
||||
|
||||
throw new ShareNotFound();
|
||||
});
|
||||
|
||||
$this->assertSame([
|
||||
[
|
||||
'id' => '42',
|
||||
'share_type' => IShare::TYPE_REMOTE,
|
||||
],
|
||||
], $ocs->getShare('42')->getData());
|
||||
}
|
||||
|
||||
|
||||
public function testCreateShareLinkNoLinksAllowed(): void {
|
||||
$this->expectException(OCSNotFoundException::class);
|
||||
|
|
|
|||
Loading…
Reference in a new issue