From efee3993972fea8231b0f84ad984bd878fc2378f Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Aug 2024 19:21:29 +0000 Subject: [PATCH] Issue 14303: Fixes %3f problem with OAuth login --- src/Module/OAuth/Acknowledge.php | 2 +- src/Module/OAuth/Authorize.php | 6 +++--- src/Module/Security/Login.php | 6 +++++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Module/OAuth/Acknowledge.php b/src/Module/OAuth/Acknowledge.php index af17567591..054e7a4ff7 100644 --- a/src/Module/OAuth/Acknowledge.php +++ b/src/Module/OAuth/Acknowledge.php @@ -45,7 +45,7 @@ class Acknowledge extends BaseApi protected function content(array $request = []): string { - DI::session()->set('return_path', $_REQUEST['return_path'] ?? ''); + DI::session()->set('return_path', 'oauth/authorize?' . $request['return_authorize']); $o = Renderer::replaceMacros(Renderer::getMarkupTemplate('oauth_authorize.tpl'), [ '$title' => DI::l10n()->t('Authorize application connection'), diff --git a/src/Module/OAuth/Authorize.php b/src/Module/OAuth/Authorize.php index 7e19cc317c..920bccaa25 100644 --- a/src/Module/OAuth/Authorize.php +++ b/src/Module/OAuth/Authorize.php @@ -68,19 +68,19 @@ class Authorize extends BaseApi $redirect_request = $_REQUEST; unset($redirect_request['pagename']); - $redirect = 'oauth/authorize?' . http_build_query($redirect_request); + $redirect = http_build_query($redirect_request); $uid = DI::userSession()->getLocalUserId(); if (empty($uid)) { Logger::info('Redirect to login'); - DI::app()->redirect('login?return_path=' . urlencode($redirect)); + DI::app()->redirect('login?' . http_build_query(['return_authorize' => $redirect])); } else { Logger::info('Already logged in user', ['uid' => $uid]); } if (!OAuth::existsTokenForUser($application, $uid) && !DI::session()->get('oauth_acknowledge')) { Logger::info('Redirect to acknowledge'); - DI::app()->redirect('oauth/acknowledge?' . http_build_query(['return_path' => $redirect, 'application' => $application['name']])); + DI::app()->redirect('oauth/acknowledge?' . http_build_query(['return_authorize' => $redirect, 'application' => $application['name']])); } DI::session()->remove('oauth_acknowledge'); diff --git a/src/Module/Security/Login.php b/src/Module/Security/Login.php index b73ffd41d3..1ad25164d9 100644 --- a/src/Module/Security/Login.php +++ b/src/Module/Security/Login.php @@ -60,7 +60,11 @@ class Login extends BaseModule protected function content(array $request = []): string { - $return_path = $request['return_path'] ?? $this->session->pop('return_path', '') ; + if (!empty($request['return_authorize'])) { + $return_path = 'oauth/authorize?' . $request['return_authorize']; + } else { + $return_path = $request['return_path'] ?? $this->session->pop('return_path', '') ; + } if ($this->session->getLocalUserId()) { $this->baseUrl->redirect($return_path);