Skip to content

Commit 4d23b8b

Browse files
Fix \Magento\Checkout\Controller\Index\Index::isSecureRequest method to take care of current request being secure and also from referer, as stated in phpdoc block
1 parent f82a175 commit 4d23b8b

File tree

2 files changed

+15
-16
lines changed

2 files changed

+15
-16
lines changed

app/code/Magento/Checkout/Controller/Index/Index.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,16 @@ public function execute()
5151
*/
5252
private function isSecureRequest(): bool
5353
{
54-
$secure = false;
5554
$request = $this->getRequest();
5655

57-
if ($request->isSecure()) {
58-
$secure = true;
59-
}
56+
$referrer = $request->getHeader('referer');
57+
$secure = false;
6058

61-
if ($request->getHeader('referer')) {
62-
$scheme = parse_url($request->getHeader('referer'), PHP_URL_SCHEME);
59+
if ($referrer) {
60+
$scheme = parse_url($referrer, PHP_URL_SCHEME);
6361
$secure = $scheme === 'https';
6462
}
6563

66-
return $secure;
64+
return $secure && $request->isSecure();
6765
}
6866
}

app/code/Magento/Checkout/Test/Unit/Controller/Index/IndexTest.php

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -236,26 +236,27 @@ public function testRegenerateSessionIdOnExecute(bool $secure, string $referer,
236236
public function sessionRegenerationDataProvider(): array
237237
{
238238
return [
239+
[
240+
'secure' => false,
241+
'referer' => 'https://test.domain.com/',
242+
'expectedCall' => self::once()
243+
],
239244
[
240245
'secure' => true,
241246
'referer' => false,
242-
'expectedCall' => self::never()
247+
'expectedCall' => self::once()
243248
],
244249
[
245250
'secure' => true,
246-
'referer' => 'https://test.domain.com/',
247-
'expectedCall' => self::never()
251+
'referer' => 'http://test.domain.com/',
252+
'expectedCall' => self::once()
248253
],
254+
// This is the only case in which session regeneration can be skipped
249255
[
250-
'secure' => false,
256+
'secure' => true,
251257
'referer' => 'https://test.domain.com/',
252258
'expectedCall' => self::never()
253259
],
254-
[
255-
'secure' => true,
256-
'referer' => 'http://test.domain.com/',
257-
'expectedCall' => self::once()
258-
]
259260
];
260261
}
261262

0 commit comments

Comments
 (0)