From b19f7b3b28da1aba35396b17946e17505369bc3f Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Thu, 19 Oct 2017 17:00:57 +0200 Subject: [PATCH 1/3] Try Signed-off-by: Mario Danic --- core/Controller/ClientFlowLoginController.php | 3 ++- tests/Core/Controller/ClientFlowLoginControllerTest.php | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/core/Controller/ClientFlowLoginController.php b/core/Controller/ClientFlowLoginController.php index 5767c9e1c6203..26bcf309b37cd 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 = 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..88a64c0e5228c 100644 --- a/tests/Core/Controller/ClientFlowLoginControllerTest.php +++ b/tests/Core/Controller/ClientFlowLoginControllerTest.php @@ -172,7 +172,7 @@ public function testShowAuthPickerPageWithOcsHeader() { 'instanceName' => 'ExampleCloud', 'urlGenerator' => $this->urlGenerator, 'stateToken' => 'StateToken', - 'serverHost' => 'example.com', + 'serverHost' => 'http://example.com', 'oauthState' => 'OauthStateToken', ], 'guest' @@ -428,7 +428,7 @@ public function testGeneratePasswordWithPassword() { ->method('getServerHost') ->willReturn('example.com'); - $expected = new Http\RedirectResponse('nc://login/server:example.com&user:MyLoginName&password:MyGeneratedToken'); + $expected = new Http\RedirectResponse('nc://login/http://server: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/http://server:example.com&user:MyLoginName&password:MyGeneratedToken'); $this->assertEquals($expected, $this->clientFlowLoginController->generateAppPassword('MyStateToken')); } } From 276126c9fb7bb6b123f70eb8bade6c8ef6cdffe6 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Thu, 19 Oct 2017 17:05:04 +0200 Subject: [PATCH 2/3] Fix path generation Signed-off-by: Mario Danic --- core/Controller/ClientFlowLoginController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/Controller/ClientFlowLoginController.php b/core/Controller/ClientFlowLoginController.php index 26bcf309b37cd..e2acb93644611 100644 --- a/core/Controller/ClientFlowLoginController.php +++ b/core/Controller/ClientFlowLoginController.php @@ -302,7 +302,7 @@ public function generateAppPassword($stateToken, ); $this->session->remove('oauth.state'); } else { - $serverPath = substr($this->request->getRequestUri(), 0, strpos($this->request->getRequestUri(), "/index.php")); + $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); } From 9064166bd8bc6c85b55d32e3d088594f3316f443 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Thu, 19 Oct 2017 17:16:08 +0200 Subject: [PATCH 3/3] Fix bugs Signed-off-by: Mario Danic --- .../Controller/ClientFlowLoginControllerTest.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/Core/Controller/ClientFlowLoginControllerTest.php b/tests/Core/Controller/ClientFlowLoginControllerTest.php index 88a64c0e5228c..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', @@ -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/http://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')); } @@ -576,7 +576,7 @@ public function testGeneratePasswordWithoutPassword() { ->method('getServerHost') ->willReturn('http://example.com'); - $expected = new Http\RedirectResponse('nc://login/http://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')); } }