Skip to content

Commit 15620fb

Browse files
committed
Merge remote-tracking branch 'origin/MAGETWO-71119' into 2.3-develop-pr6
2 parents eea0328 + a0deeb3 commit 15620fb

File tree

2 files changed

+96
-2
lines changed

2 files changed

+96
-2
lines changed

app/code/Magento/Ui/Controller/Adminhtml/Export/GridToCsv.php

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
use Magento\Backend\App\Action\Context;
1010
use Magento\Ui\Model\Export\ConvertToCsv;
1111
use Magento\Framework\App\Response\Http\FileFactory;
12+
use Magento\Framework\App\ObjectManager;
13+
use Magento\Ui\Component\MassAction\Filter;
14+
use Psr\Log\LoggerInterface;
1215

1316
/**
1417
* Class Render
@@ -25,19 +28,35 @@ class GridToCsv extends Action
2528
*/
2629
protected $fileFactory;
2730

31+
/**
32+
* @var Filter
33+
*/
34+
private $filter;
35+
36+
/**
37+
* @var LoggerInterface
38+
*/
39+
private $logger;
40+
2841
/**
2942
* @param Context $context
3043
* @param ConvertToCsv $converter
3144
* @param FileFactory $fileFactory
45+
* @param Filter|null $filter
46+
* @param LoggerInterface|null $logger
3247
*/
3348
public function __construct(
3449
Context $context,
3550
ConvertToCsv $converter,
36-
FileFactory $fileFactory
51+
FileFactory $fileFactory,
52+
Filter $filter = null,
53+
LoggerInterface $logger = null
3754
) {
3855
parent::__construct($context);
3956
$this->converter = $converter;
4057
$this->fileFactory = $fileFactory;
58+
$this->filter = $filter ?: ObjectManager::getInstance()->get(Filter::class);
59+
$this->logger = $logger ?: ObjectManager::getInstance()->get(LoggerInterface::class);
4160
}
4261

4362
/**
@@ -50,4 +69,32 @@ public function execute()
5069
{
5170
return $this->fileFactory->create('export.csv', $this->converter->getCsvFile(), 'var');
5271
}
72+
73+
/**
74+
* Checking if the user has access to requested component.
75+
*
76+
* @inheritDoc
77+
*/
78+
protected function _isAllowed()
79+
{
80+
if ($this->_request->getParam('namespace')) {
81+
try {
82+
$component = $this->filter->getComponent();
83+
$dataProviderConfig = $component->getContext()
84+
->getDataProvider()
85+
->getConfigData();
86+
if (isset($dataProviderConfig['aclResource'])) {
87+
return $this->_authorization->isAllowed(
88+
$dataProviderConfig['aclResource']
89+
);
90+
}
91+
} catch (\Throwable $exception) {
92+
$this->logger->critical($exception);
93+
94+
return false;
95+
}
96+
}
97+
98+
return true;
99+
}
53100
}

app/code/Magento/Ui/Controller/Adminhtml/Export/GridToXml.php

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
use Magento\Backend\App\Action\Context;
1010
use Magento\Ui\Model\Export\ConvertToXml;
1111
use Magento\Framework\App\Response\Http\FileFactory;
12+
use Magento\Framework\App\ObjectManager;
13+
use Magento\Ui\Component\MassAction\Filter;
14+
use Psr\Log\LoggerInterface;
1215

1316
/**
1417
* Class Render
@@ -25,19 +28,35 @@ class GridToXml extends Action
2528
*/
2629
protected $fileFactory;
2730

31+
/**
32+
* @var Filter
33+
*/
34+
private $filter;
35+
36+
/**
37+
* @var LoggerInterface
38+
*/
39+
private $logger;
40+
2841
/**
2942
* @param Context $context
3043
* @param ConvertToXml $converter
3144
* @param FileFactory $fileFactory
45+
* @param Filter|null $filter
46+
* @param LoggerInterface|null $logger
3247
*/
3348
public function __construct(
3449
Context $context,
3550
ConvertToXml $converter,
36-
FileFactory $fileFactory
51+
FileFactory $fileFactory,
52+
Filter $filter = null,
53+
LoggerInterface $logger = null
3754
) {
3855
parent::__construct($context);
3956
$this->converter = $converter;
4057
$this->fileFactory = $fileFactory;
58+
$this->filter = $filter ?: ObjectManager::getInstance()->get(Filter::class);
59+
$this->logger = $logger ?: ObjectManager::getInstance()->get(LoggerInterface::class);
4160
}
4261

4362
/**
@@ -50,4 +69,32 @@ public function execute()
5069
{
5170
return $this->fileFactory->create('export.xml', $this->converter->getXmlFile(), 'var');
5271
}
72+
73+
/**
74+
* Checking if the user has access to requested component.
75+
*
76+
* @inheritDoc
77+
*/
78+
protected function _isAllowed()
79+
{
80+
if ($this->_request->getParam('namespace')) {
81+
try {
82+
$component = $this->filter->getComponent();
83+
$dataProviderConfig = $component->getContext()
84+
->getDataProvider()
85+
->getConfigData();
86+
if (isset($dataProviderConfig['aclResource'])) {
87+
return $this->_authorization->isAllowed(
88+
$dataProviderConfig['aclResource']
89+
);
90+
}
91+
} catch (\Throwable $exception) {
92+
$this->logger->critical($exception);
93+
94+
return false;
95+
}
96+
}
97+
98+
return true;
99+
}
53100
}

0 commit comments

Comments
 (0)