diff --git a/core/Controller/ClientFlowLoginController.php b/core/Controller/ClientFlowLoginController.php index 5767c9e1c6203..e2acb93644611 100644 --- a/core/Controller/ClientFlowLoginController.php +++ b/core/Controller/ClientFlowLoginController.php @@ -302,7 +302,8 @@ public function generateAppPassword($stateToken, ); $this->session->remove('oauth.state'); } else { - $redirectUri = 'nc://login/server:' . $this->request->getServerHost() . '&user:' . urlencode($loginName) . '&password:' . urlencode($token); + $serverPath = $this->request->getServerProtocol() . "://" . $this->request->getServerHost() . substr($this->request->getRequestUri(), 0, strpos($this->request->getRequestUri(), "/index.php")); + $redirectUri = 'nc://login/server:' . $serverPath . '&user:' . urlencode($loginName) . '&password:' . urlencode($token); } return new Http\RedirectResponse($redirectUri); diff --git a/tests/Core/Controller/ClientFlowLoginControllerTest.php b/tests/Core/Controller/ClientFlowLoginControllerTest.php index 89253f130380c..6cf6a31f531e0 100644 --- a/tests/Core/Controller/ClientFlowLoginControllerTest.php +++ b/tests/Core/Controller/ClientFlowLoginControllerTest.php @@ -161,7 +161,7 @@ public function testShowAuthPickerPageWithOcsHeader() { $this->request ->expects($this->once()) ->method('getServerHost') - ->willReturn('example.com'); + ->willReturn('http://example.com'); $expected = new TemplateResponse( 'core', @@ -172,7 +172,7 @@ public function testShowAuthPickerPageWithOcsHeader() { 'instanceName' => 'ExampleCloud', 'urlGenerator' => $this->urlGenerator, 'stateToken' => 'StateToken', - 'serverHost' => 'example.com', + 'serverHost' => 'http://example.com', 'oauthState' => 'OauthStateToken', ], 'guest' @@ -217,7 +217,7 @@ public function testShowAuthPickerPageWithOauth() { $this->request ->expects($this->once()) ->method('getServerHost') - ->willReturn('example.com'); + ->willReturn('http://example.com'); $expected = new TemplateResponse( 'core', @@ -228,7 +228,7 @@ public function testShowAuthPickerPageWithOauth() { 'instanceName' => 'ExampleCloud', 'urlGenerator' => $this->urlGenerator, 'stateToken' => 'StateToken', - 'serverHost' => 'example.com', + 'serverHost' => 'http://example.com', 'oauthState' => 'OauthStateToken', ], 'guest' @@ -426,9 +426,9 @@ public function testGeneratePasswordWithPassword() { $this->request ->expects($this->once()) ->method('getServerHost') - ->willReturn('example.com'); + ->willReturn('http://example.com'); - $expected = new Http\RedirectResponse('nc://login/server:example.com&user:MyLoginName&password:MyGeneratedToken'); + $expected = new Http\RedirectResponse('nc://login/server:http://example.com&user:MyLoginName&password:MyGeneratedToken'); $this->assertEquals($expected, $this->clientFlowLoginController->generateAppPassword('MyStateToken')); } @@ -574,9 +574,9 @@ public function testGeneratePasswordWithoutPassword() { $this->request ->expects($this->once()) ->method('getServerHost') - ->willReturn('example.com'); + ->willReturn('http://example.com'); - $expected = new Http\RedirectResponse('nc://login/server:example.com&user:MyLoginName&password:MyGeneratedToken'); + $expected = new Http\RedirectResponse('nc://login/server:http://example.com&user:MyLoginName&password:MyGeneratedToken'); $this->assertEquals($expected, $this->clientFlowLoginController->generateAppPassword('MyStateToken')); } }