Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
All Data Structures Namespaces Files Functions Variables Pages
AnonymousResourceSecurity.php
Go to the documentation of this file.
1 <?php
7 
9 
11 {
15  const XML_ALLOW_INSECURE = 'webapi/webapisecurity/allow_insecure';
16 
20  protected $config;
21 
25  protected $resources;
26 
33  public function __construct(\Magento\Framework\App\Config\ReinitableConfigInterface $config, $resources)
34  {
35  $this->config = $config;
36  $this->resources = $resources;
37  }
38 
47  public function afterConvert(Converter $subject, $nodes)
48  {
49  if (empty($nodes)) {
50  return $nodes;
51  }
52  $useInsecure = $this->config->getValue(self::XML_ALLOW_INSECURE);
53  if ($useInsecure) {
54  foreach (array_keys($this->resources) as $resource) {
55  list($route, $requestType) = explode("::", $resource);
56  if ($result = $this->getNode($route, $requestType, $nodes["routes"])) {
57  if (isset($result[$requestType]['resources'])) {
58  $result[$requestType]['resources'] = ['anonymous' => true];
59  $nodes['routes'][$route] = $result;
60  }
61 
62  if (isset($result[$requestType]['service']['class'])
63  && isset($result[$requestType]['service']['method'])
64  ) {
65  $serviceName = $result[$requestType]['service']['class'];
66  $serviceMethod = $result[$requestType]['service']['method'];
67  $nodes['services'][$serviceName]['V1']['methods'][$serviceMethod]['resources'] = ['anonymous'];
68  }
69  }
70  }
71  }
72 
73  return $nodes;
74  }
75 
84  private function getNode($route, $requestType, $source)
85  {
86  if (isset($source[$route][$requestType])) {
87  return $source[$route];
88  }
89  return null;
90  }
91 }
$source
Definition: source.php:23
$resource
Definition: bulk.php:12
__construct(\Magento\Framework\App\Config\ReinitableConfigInterface $config, $resources)