Skip to content
This repository was archived by the owner on Dec 19, 2019. It is now read-only.

Commit cfa198b

Browse files
authored
Merge pull request #1 from magento/2.3-develop
merge magento:2.3-develop
2 parents 4dac65b + 5588999 commit cfa198b

File tree

904 files changed

+68987
-17919
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

904 files changed

+68987
-17919
lines changed

.github/CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ The Magento 2 development team or community maintainers will review all issues a
1111
During the review we might require clarifications from the contributor.
1212
If there is no response from the contributor within two weeks, the pull request will be closed.
1313

14-
For more detialed information on contribution please read our [beginners guide](https://github.com/magento/magento2/wiki/Getting-Started).
14+
For more detailed information on contribution please read our [beginners guide](https://github.com/magento/magento2/wiki/Getting-Started).
1515

1616
## Contribution requirements
1717

app/code/Magento/AdminNotification/Model/Feed.php

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
namespace Magento\AdminNotification\Model;
77

8+
use Magento\Framework\Escaper;
9+
use Magento\Framework\App\ObjectManager;
810
use Magento\Framework\Config\ConfigOptionsListConstants;
911

1012
/**
@@ -25,6 +27,11 @@ class Feed extends \Magento\Framework\Model\AbstractModel
2527

2628
const XML_LAST_UPDATE_PATH = 'system/adminnotification/last_update';
2729

30+
/**
31+
* @var Escaper
32+
*/
33+
private $escaper;
34+
2835
/**
2936
* Feed url
3037
*
@@ -77,6 +84,7 @@ class Feed extends \Magento\Framework\Model\AbstractModel
7784
* @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
7885
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
7986
* @param array $data
87+
* @param Escaper|null $escaper
8088
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
8189
*/
8290
public function __construct(
@@ -90,21 +98,26 @@ public function __construct(
9098
\Magento\Framework\UrlInterface $urlBuilder,
9199
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
92100
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
93-
array $data = []
101+
array $data = [],
102+
Escaper $escaper = null
94103
) {
95104
parent::__construct($context, $registry, $resource, $resourceCollection, $data);
96-
$this->_backendConfig = $backendConfig;
97-
$this->_inboxFactory = $inboxFactory;
98-
$this->curlFactory = $curlFactory;
105+
$this->_backendConfig = $backendConfig;
106+
$this->_inboxFactory = $inboxFactory;
107+
$this->curlFactory = $curlFactory;
99108
$this->_deploymentConfig = $deploymentConfig;
100-
$this->productMetadata = $productMetadata;
101-
$this->urlBuilder = $urlBuilder;
109+
$this->productMetadata = $productMetadata;
110+
$this->urlBuilder = $urlBuilder;
111+
$this->escaper = $escaper ?? ObjectManager::getInstance()->get(
112+
Escaper::class
113+
);
102114
}
103115

104116
/**
105117
* Init model
106118
*
107119
* @return void
120+
* phpcs:disable Magento2.CodeAnalysis.EmptyBlock
108121
*/
109122
protected function _construct()
110123
{
@@ -252,6 +265,6 @@ public function getFeedXml()
252265
*/
253266
private function escapeString(\SimpleXMLElement $data)
254267
{
255-
return htmlspecialchars((string)$data);
268+
return $this->escaper->escapeHtml((string)$data);
256269
}
257270
}

app/code/Magento/AdminNotification/composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"magento/module-backend": "*",
1212
"magento/module-media-storage": "*",
1313
"magento/module-store": "*",
14-
"magento/module-ui": "*"
14+
"magento/module-ui": "*",
15+
"magento/module-config": "*"
1516
},
1617
"type": "magento2-module",
1718
"license": [

app/code/Magento/AdvancedSearch/view/adminhtml/templates/system/config/testconnection.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@
1111
"successText": "<?= $block->escapeHtmlAttr(__('Successful! Test again?')) ?>",
1212
"failedText": "<?= $block->escapeHtmlAttr(__('Connection failed! Test again?')) ?>",
1313
"fieldMapping": "<?= /* @noEscape */ $block->getFieldMapping() ?>"}, "validation": {}}'>
14-
<span><span><span id="<?= $block->getHtmlId() ?>_result"><?= $block->escapeHtml($block->getButtonLabel()) ?></span></span></span>
14+
<span id="<?= $block->getHtmlId() ?>_result"><?= $block->escapeHtml($block->getButtonLabel()) ?></span>
1515
</button>

app/code/Magento/Analytics/Test/Mftf/Section/AdminConfigAdvancedReportingSection.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
<element name="advancedReportingIndustry" type="select" selector="#analytics_general_vertical"/>
1515
<element name="advancedReportingIndustryLabel" type="text" selector=".config-vertical-label>label>span"/>
1616
<element name="advancedReportingHour" type="select" selector="#row_analytics_general_collection_time>td:nth-child(2)>select:nth-child(2)"/>
17-
<element name="advancedReportingMinute" type="select" selector="#row_analytics_general_collection_time>td:nth-child(2)>select:nth-child(3)"/>
18-
<element name="advancedReportingSeconds" type="select" selector="#row_analytics_general_collection_time>td:nth-child(2)>select:nth-child(4)"/>
17+
<element name="advancedReportingMinute" type="select" selector="#row_analytics_general_collection_time>td:nth-child(2)>select:nth-child(4)"/>
18+
<element name="advancedReportingSeconds" type="select" selector="#row_analytics_general_collection_time>td:nth-child(2)>select:nth-child(6)"/>
1919
<element name="advancedReportingBlankIndustryError" type="text" selector=".message-error>div"/>
2020
</section>
2121
</sections>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
namespace Magento\AuthorizenetAcceptjs\Gateway\Request;
10+
11+
use Magento\Payment\Gateway\Request\BuilderInterface;
12+
13+
/**
14+
* Stub data builder.
15+
*
16+
* Since the order of params is matters for Authorize.net request,
17+
* this builder is used to reserve a place in builders sequence.
18+
*/
19+
class StubDataBuilder implements BuilderInterface
20+
{
21+
/**
22+
* @inheritdoc
23+
*/
24+
public function build(array $buildSubject): array
25+
{
26+
return [];
27+
}
28+
}

app/code/Magento/AuthorizenetAcceptjs/Test/Unit/Observer/DataAssignObserverTest.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
use Magento\Quote\Api\Data\PaymentInterface;
1818
use PHPUnit\Framework\TestCase;
1919

20+
/**
21+
* Tests DataAssignObserver
22+
*/
2023
class DataAssignObserverTest extends TestCase
2124
{
2225
public function testExecuteSetsProperData()
@@ -30,9 +33,7 @@ public function testExecuteSetsProperData()
3033
$observerContainer = $this->createMock(Observer::class);
3134
$event = $this->createMock(Event::class);
3235
$paymentInfoModel = $this->createMock(InfoInterface::class);
33-
$dataObject = new DataObject([
34-
PaymentInterface::KEY_ADDITIONAL_DATA => $additionalInfo
35-
]);
36+
$dataObject = new DataObject([PaymentInterface::KEY_ADDITIONAL_DATA => $additionalInfo]);
3637
$observerContainer->method('getEvent')
3738
->willReturn($event);
3839
$event->method('getDataByKey')

app/code/Magento/AuthorizenetAcceptjs/etc/adminhtml/di.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,24 @@
1111
<argument name="config" xsi:type="object">Magento\AuthorizenetAcceptjs\Model\Ui\ConfigProvider</argument>
1212
</arguments>
1313
</type>
14+
<virtualType name="AuthorizenetAcceptjsAuthorizeRequest" type="Magento\Payment\Gateway\Request\BuilderComposite">
15+
<arguments>
16+
<argument name="builders" xsi:type="array">
17+
<item name="request_type" xsi:type="string">AuthorizenetAcceptjsTransactionRequestTypeBuilder</item>
18+
<item name="store" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\StoreConfigBuilder</item>
19+
<item name="merchant_account" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\AuthenticationDataBuilder</item>
20+
<item name="transaction_type" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\AuthorizeDataBuilder</item>
21+
<item name="amount" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\AmountDataBuilder</item>
22+
<item name="payment" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\PaymentDataBuilder</item>
23+
<item name="shipping" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\ShippingDataBuilder</item>
24+
<item name="solution" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\SolutionDataBuilder</item>
25+
<item name="order" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\OrderDataBuilder</item>
26+
<item name="po" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\PoDataBuilder</item>
27+
<item name="customer" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\CustomerDataBuilder</item>
28+
<item name="address" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\AddressDataBuilder</item>
29+
<item name="custom_settings" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\CustomSettingsBuilder</item>
30+
<item name="passthrough_data" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\PassthroughDataBuilder</item>
31+
</argument>
32+
</arguments>
33+
</virtualType>
1434
</config>

app/code/Magento/AuthorizenetAcceptjs/etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@
258258
<item name="po" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\PoDataBuilder</item>
259259
<item name="customer" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\CustomerDataBuilder</item>
260260
<item name="address" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\AddressDataBuilder</item>
261+
<item name="3d_secure" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\StubDataBuilder</item>
261262
<item name="custom_settings" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\CustomSettingsBuilder</item>
262263
<item name="passthrough_data" xsi:type="string">Magento\AuthorizenetAcceptjs\Gateway\Request\PassthroughDataBuilder</item>
263264
</argument>
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
namespace Magento\AuthorizenetCardinal\Gateway\Request;
10+
11+
use Magento\AuthorizenetAcceptjs\Gateway\SubjectReader;
12+
use Magento\AuthorizenetCardinal\Model\Config;
13+
use Magento\CardinalCommerce\Model\Response\JwtParser;
14+
use Magento\Payment\Gateway\Request\BuilderInterface;
15+
use Magento\Sales\Model\Order\Payment;
16+
17+
/**
18+
* Adds the cardholder authentication information to the request
19+
*/
20+
class Authorize3DSecureBuilder implements BuilderInterface
21+
{
22+
/**
23+
* @var SubjectReader
24+
*/
25+
private $subjectReader;
26+
27+
/**
28+
* @var Config
29+
*/
30+
private $config;
31+
32+
/**
33+
* @var JwtParser
34+
*/
35+
private $jwtParser;
36+
37+
/**
38+
* @param SubjectReader $subjectReader
39+
* @param Config $config
40+
* @param JwtParser $jwtParser
41+
*/
42+
public function __construct(
43+
SubjectReader $subjectReader,
44+
Config $config,
45+
JwtParser $jwtParser
46+
) {
47+
$this->subjectReader = $subjectReader;
48+
$this->config = $config;
49+
$this->jwtParser = $jwtParser;
50+
}
51+
52+
/**
53+
* @inheritdoc
54+
*/
55+
public function build(array $buildSubject): array
56+
{
57+
if ($this->config->isActive() === false) {
58+
return [];
59+
}
60+
61+
$paymentDO = $this->subjectReader->readPayment($buildSubject);
62+
$payment = $paymentDO->getPayment();
63+
$data = [];
64+
65+
if ($payment instanceof Payment) {
66+
$cardinalJwt = (string)$payment->getAdditionalInformation('cardinalJWT');
67+
$jwtPayload = $this->jwtParser->execute($cardinalJwt);
68+
$eciFlag = $jwtPayload['Payload']['Payment']['ExtendedData']['ECIFlag'] ?? '';
69+
$cavv = $jwtPayload['Payload']['Payment']['ExtendedData']['CAVV'] ?? '';
70+
$data = [
71+
'transactionRequest' => [
72+
'cardholderAuthentication' => [
73+
'authenticationIndicator' => $eciFlag,
74+
'cardholderAuthenticationValue' => $cavv
75+
],
76+
]
77+
];
78+
}
79+
80+
return $data;
81+
}
82+
}

0 commit comments

Comments
 (0)