Skip to content

Commit c72de6a

Browse files
committed
Redirect loop when URL have uppercase
1 parent a98a64a commit c72de6a

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

app/code/Magento/Config/Model/Config/Backend/Baseurl.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
*/
66
namespace Magento\Config\Model\Config\Backend;
77

8-
use Magento\Framework\Validator\Url as UrlValidator;
98
use Magento\Framework\App\ObjectManager;
9+
use Magento\Framework\Validator\Url as UrlValidator;
1010

1111
/**
1212
* @api
@@ -56,7 +56,7 @@ public function __construct(
5656
*/
5757
public function beforeSave()
5858
{
59-
$value = $this->getValue();
59+
$value = strtolower($this->getValue());
6060
try {
6161
if (!$this->_validateUnsecure($value) && !$this->_validateSecure($value)) {
6262
$this->_validateFullyQualifiedUrl($value);
@@ -68,6 +68,7 @@ public function beforeSave()
6868
$error = new \Magento\Framework\Exception\LocalizedException($msg, $e);
6969
throw $error;
7070
}
71+
$this->setValue($value);
7172
}
7273

7374
/**
@@ -232,6 +233,7 @@ public function afterSave()
232233
* Get URL Validator
233234
*
234235
* @deprecated 100.1.12
236+
* @see Nothing
235237
* @return UrlValidator
236238
*/
237239
private function getUrlValidator()

app/code/Magento/Config/Test/Unit/Model/Config/Backend/BaseurlTest.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,30 @@ public function testSaveMergedJsCssMustBeCleaned()
6161
$model->setValue('http://example.com/')->setPath(Store::XML_PATH_UNSECURE_BASE_URL);
6262
$model->afterSave();
6363
}
64+
65+
/**
66+
* @dataProvider beforeSaveDataProvider
67+
* @param string|null $value
68+
* @param string|bool $expectedValue false if exception to be thrown
69+
* @return void
70+
*/
71+
public function testBeforeSaveConvertLowerCase($value, $expectedValue)
72+
{
73+
$model = (new ObjectManager($this))->getObject(Baseurl::class);
74+
$model->setValue($value);
75+
$model->beforeSave();
76+
$this->assertEquals($expectedValue, $model->getValue());
77+
}
78+
79+
/**
80+
* @return array
81+
*/
82+
public function beforeSaveDataProvider()
83+
{
84+
return [
85+
['https://Example1.com/', 'https://example1.com/'],
86+
['https://EXAMPLE2.COM/', 'https://example2.com/'],
87+
['HTtpS://ExamPLe3.COM/', 'https://example3.com/'],
88+
];
89+
}
6490
}

0 commit comments

Comments
 (0)