Skip to content

Commit 306dab3

Browse files
committed
ACP2E-3343: Critical 500 Error: Magento\Framework\Webapi\Exception Related to Accept HTTP Header
1 parent 581b7ef commit 306dab3

File tree

3 files changed

+47
-11
lines changed

3 files changed

+47
-11
lines changed

app/code/Magento/Quote/Model/QuoteValidator.php

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
use Magento\Quote\Model\Quote as QuoteEntity;
1515
use Magento\Quote\Model\Quote\Validator\MinimumOrderAmount\ValidationMessage as OrderAmountValidationMessage;
1616
use Magento\Quote\Model\ValidationRules\QuoteValidationRuleInterface;
17-
use Magento\Framework\Webapi\Rest\Response as RestResponse;
1817

1918
/**
2019
* Class to validate the quote
@@ -44,32 +43,24 @@ class QuoteValidator
4443
*/
4544
private $quoteValidationRule;
4645

47-
/**
48-
* @var RestResponse
49-
*/
50-
private $_response;
51-
5246
/**
5347
* QuoteValidator constructor.
5448
*
5549
* @param AllowedCountries|null $allowedCountryReader
5650
* @param OrderAmountValidationMessage|null $minimumAmountMessage
5751
* @param QuoteValidationRuleInterface|null $quoteValidationRule
58-
* @param RestResponse|null $response
5952
*/
6053
public function __construct(
6154
AllowedCountries $allowedCountryReader = null,
6255
OrderAmountValidationMessage $minimumAmountMessage = null,
63-
QuoteValidationRuleInterface $quoteValidationRule = null,
64-
RestResponse $response = null
56+
QuoteValidationRuleInterface $quoteValidationRule = null
6557
) {
6658
$this->allowedCountryReader = $allowedCountryReader ?: ObjectManager::getInstance()
6759
->get(AllowedCountries::class);
6860
$this->minimumAmountMessage = $minimumAmountMessage ?: ObjectManager::getInstance()
6961
->get(OrderAmountValidationMessage::class);
7062
$this->quoteValidationRule = $quoteValidationRule ?: ObjectManager::getInstance()
7163
->get(QuoteValidationRuleInterface::class);
72-
$this->_response = $response ?: ObjectManager::getInstance()->get(RestResponse::class);
7364
}
7465

7566
/**
@@ -115,7 +106,6 @@ public function validateBeforeSubmit(QuoteEntity $quote)
115106
$defaultMessage .= ' %1';
116107
}
117108
if ($defaultMessage) {
118-
$this->_response->setHeader('errorRedirectAction', '#shipping');
119109
throw new ValidatorException(__($defaultMessage, implode(' ', $messages)));
120110
}
121111
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
/**
3+
* Copyright 2024 Adobe
4+
* All Rights Reserved.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Quote\Plugin\Webapi\Model;
9+
10+
use Magento\Framework\Validator\Exception as ValidatorException;
11+
use Magento\Framework\Webapi\Rest\Response as RestResponse;
12+
use Magento\Quote\Model\Quote;
13+
use Magento\Quote\Model\QuoteValidator;
14+
15+
class ErrorRedirectProcessor
16+
{
17+
/**
18+
* @param RestResponse $restResponse
19+
*/
20+
public function __construct(
21+
private readonly RestResponse $restResponse
22+
) {
23+
}
24+
25+
/**
26+
* Set errorRedirectAction in case of exception.
27+
*
28+
* @param QuoteValidator $subject
29+
* @param callable $proceed
30+
* @param Quote $quote
31+
*/
32+
public function aroundValidateBeforeSubmit(QuoteValidator $subject, callable $proceed, Quote $quote)
33+
{
34+
try {
35+
$result = $proceed($quote);
36+
} catch (ValidatorException $e) {
37+
$this->restResponse->setHeader('errorRedirectAction', '#shipping');
38+
throw $e;
39+
}
40+
41+
return $result;
42+
}
43+
}

app/code/Magento/Quote/etc/webapi_rest/di.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,7 @@
2222
<type name="Magento\Webapi\Controller\Rest\ParamsOverrider">
2323
<plugin name="validateQuoteData" type="Magento\Quote\Plugin\Webapi\Controller\Rest\ValidateQuoteData" sortOrder="1" disabled="false" />
2424
</type>
25+
<type name="Magento\Quote\Model\QuoteValidator">
26+
<plugin name="error_redirect_processor" type="Magento\Quote\Plugin\Webapi\Model\ErrorRedirectProcessor" />
27+
</type>
2528
</config>

0 commit comments

Comments
 (0)