diff --git a/core/Controller/ClientFlowLoginController.php b/core/Controller/ClientFlowLoginController.php index 036ea4eaee..96e55848b9 100644 --- a/core/Controller/ClientFlowLoginController.php +++ b/core/Controller/ClientFlowLoginController.php @@ -355,6 +355,18 @@ class ClientFlowLoginController extends Controller { return new Http\RedirectResponse($redirectUri); } + /** + * @PublicPage + */ + public function apptokenRedirect(string $stateToken, string $user, string $password) { + if (!$this->isValidToken($stateToken)) { + return $this->stateTokenForbiddenResponse(); + } + + $redirectUri = 'nc://login/server:' . $this->getServerPath() . '&user:' . urlencode($user) . '&password:' . urlencode($password); + return new Http\RedirectResponse($redirectUri); + } + private function getServerPath(): string { $serverPostfix = ''; diff --git a/core/js/login/authpicker.js b/core/js/login/authpicker.js index 2d4bcc3315..e1e34bbd8d 100644 --- a/core/js/login/authpicker.js +++ b/core/js/login/authpicker.js @@ -5,12 +5,4 @@ jQuery(document).ready(function() { $('#redirect-link').addClass('hidden'); $('#app-token-login-field').removeClass('hidden'); }); - - $('#submit-app-token-login').click(function(e) { - e.preventDefault(); - window.location.href = 'nc://login/server:' - + encodeURIComponent($('#serverHost').val()) - + "&user:" + encodeURIComponent($('#user').val()) - + "&password:" + encodeURIComponent($('#password').val()); - }); }); diff --git a/core/routes.php b/core/routes.php index 8dedfd1a4c..37fb8d4e05 100644 --- a/core/routes.php +++ b/core/routes.php @@ -55,6 +55,7 @@ $application->registerRoutes($this, [ ['name' => 'ClientFlowLogin#redirectPage', 'url' => '/login/flow/redirect', 'verb' => 'GET'], ['name' => 'ClientFlowLogin#generateAppPassword', 'url' => '/login/flow', 'verb' => 'POST'], ['name' => 'ClientFlowLogin#grantPage', 'url' => '/login/flow/grant', 'verb' => 'GET'], + ['name' => 'ClientFlowLogin#apptokenRedirect', 'url' => '/login/flow/apptoken', 'verb' => 'POST'], ['name' => 'TwoFactorChallenge#selectChallenge', 'url' => '/login/selectchallenge', 'verb' => 'GET'], ['name' => 'TwoFactorChallenge#showChallenge', 'url' => '/login/challenge/{challengeProviderId}', 'verb' => 'GET'], ['name' => 'TwoFactorChallenge#solveChallenge', 'url' => '/login/challenge/{challengeProviderId}', 'verb' => 'POST'], diff --git a/core/templates/loginflow/authpicker.php b/core/templates/loginflow/authpicker.php index 4e2282a180..41b3223652 100644 --- a/core/templates/loginflow/authpicker.php +++ b/core/templates/loginflow/authpicker.php @@ -44,7 +44,7 @@ $urlGenerator = $_['urlGenerator'];

- +