29
0
mirror of https://github.com/joomla/joomla-cms.git synced 2024-06-17 01:22:48 +00:00

[4.4] Fix cancel frontend module editing redirection (#42870)

* Fix redirect URL when cancel editing a module from frontend

* Code simplify

* More clear comment

* Update components/com_config/src/Controller/ModulesController.php

Co-authored-by: Brian Teeman <brian@teeman.net>

* Fix comment typo

* Update components/com_config/src/Controller/ModulesController.php

Co-authored-by: Christian Heel <66922325+heelc29@users.noreply.github.com>

---------

Co-authored-by: Brian Teeman <brian@teeman.net>
Co-authored-by: Quy <quy@nomonkeybiz.com>
Co-authored-by: Christian Heel <66922325+heelc29@users.noreply.github.com>
This commit is contained in:
Tuan Pham Ngoc 2024-03-04 20:01:53 +07:00 committed by GitHub
parent 76f6773a9c
commit 3be05bff6a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -59,8 +59,8 @@ class ModulesController extends BaseController
*/ */
public function cancel() public function cancel()
{ {
// Redirect back to home(base) page // Redirect back to previous page
$this->setRedirect(Uri::base()); $this->setRedirect($this->getReturnUrl());
} }
/** /**
@ -150,19 +150,29 @@ class ModulesController extends BaseController
case 'save': case 'save':
default: default:
if (!empty($returnUri)) { $this->setRedirect($this->getReturnUrl());
$redirect = base64_decode(urldecode($returnUri));
// Don't redirect to an external URL.
if (!Uri::isInternal($redirect)) {
$redirect = Uri::base();
}
} else {
$redirect = Uri::base();
}
$this->setRedirect($redirect);
break; break;
} }
} }
/**
* Method to get redirect URL after saving or cancel editing a module from frontend
*
* @return string
*
* @since __DEPLOY_VERSION__
*/
private function getReturnUrl(): string
{
if ($return = $this->input->post->get('return', '', 'BASE64')) {
$return = base64_decode(urldecode($return));
// Only redirect to if it is an internal URL
if (Uri::isInternal($return)) {
return $return;
}
}
return Uri::base();
}
} }