Skip to content

Commit

Permalink
fix(dav): Update 403 error message
Browse files Browse the repository at this point in the history
* The user should get a more friendly warning when their desktop client version is not supported anymore by the server.
  See #nextcloud/desktop/issues/6273
* Update BlockLegacyClientPluginTest to reflect the new 403 error message.

Signed-off-by: Camila Ayres <hello@camilasan.com>
  • Loading branch information
camilasan authored and susnux committed Sep 6, 2024
1 parent a05e542 commit 0a72756
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
3 changes: 2 additions & 1 deletion apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ public function beforeHandler(RequestInterface $request) {
preg_match(IRequest::USER_AGENT_CLIENT_DESKTOP, $userAgent, $versionMatches);
if (isset($versionMatches[1]) &&
version_compare($versionMatches[1], $minimumSupportedDesktopVersion) === -1) {
throw new \Sabre\DAV\Exception\Forbidden('Unsupported client version.');
$customClientDesktopLink = $this->config->getSystemValue('customclient_desktop', 'https://nextcloud.com/install/#install-clients');
throw new \Sabre\DAV\Exception\Forbidden('This version of the client is unsupported. Upgrade to <a href="'.$customClientDesktopLink.'">version '.$minimumSupportedDesktopVersion.' or later</a>.');
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,20 @@ public function oldDesktopClientProvider(): array {
*/
public function testBeforeHandlerException(string $userAgent): void {
$this->expectException(\Sabre\DAV\Exception\Forbidden::class);
$this->expectExceptionMessage('Unsupported client version.');

$this->config
->expects($this->once())
->method('getSystemValue')
->with('customclient_desktop', 'https://nextcloud.com/install/#install-clients')
->willReturn('https://nextcloud.com/install/#install-clients');

$this->config
->expects($this->once())
->method('getSystemValue')
->with('minimum.supported.desktop.version', '2.3.0')
->willReturn('1.7.0');

$this->expectExceptionMessage('This version of the client is unsupported. Upgrade to <a href="https://nextcloud.com/install/#install-clients">version 1.7.0 or later</a>.');

/** @var RequestInterface|MockObject $request */
$request = $this->createMock('\Sabre\HTTP\RequestInterface');
Expand All @@ -55,11 +68,6 @@ public function testBeforeHandlerException(string $userAgent): void {
->with('User-Agent')
->willReturn($userAgent);

$this->config
->expects($this->once())
->method('getSystemValue')
->with('minimum.supported.desktop.version', '2.3.0')
->willReturn('1.7.0');

$this->blockLegacyClientVersionPlugin->beforeHandler($request);
}
Expand Down

0 comments on commit 0a72756

Please sign in to comment.