Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 15 |
RestPermissions | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
42 | |
0.00% |
0 / 15 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
permissions | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 10 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\rest\RestPermissions. | |
*/ | |
namespace Drupal\rest; | |
use Drupal\Core\Config\ConfigFactoryInterface; | |
use Drupal\Core\DependencyInjection\ContainerInjectionInterface; | |
use Drupal\rest\Plugin\Type\ResourcePluginManager; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
/** | |
* Provides rest module permissions. | |
*/ | |
class RestPermissions implements ContainerInjectionInterface { | |
/** | |
* The rest resource plugin manager. | |
* | |
* @var \Drupal\rest\Plugin\Type\ResourcePluginManager | |
*/ | |
protected $restPluginManager; | |
/** | |
* The config factory. | |
* | |
* @var \Drupal\Core\Config\ConfigFactoryInterface | |
*/ | |
protected $configFactory; | |
/** | |
* Constructs a new RestPermissions instance. | |
* | |
* @param \Drupal\rest\Plugin\Type\ResourcePluginManager $rest_plugin_manager | |
* The rest resource plugin manager. | |
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory | |
* The config factory. | |
*/ | |
public function __construct(ResourcePluginManager $rest_plugin_manager, ConfigFactoryInterface $config_factory) { | |
$this->restPluginManager = $rest_plugin_manager; | |
$this->configFactory = $config_factory; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function create(ContainerInterface $container) { | |
return new static($container->get('plugin.manager.rest'), $container->get('config.factory')); | |
} | |
/** | |
* Returns an array of REST permissions. | |
* | |
* @return array | |
*/ | |
public function permissions() { | |
$permissions = []; | |
$resources = $this->configFactory->get('rest.settings')->get('resources'); | |
if ($resources && $enabled = array_intersect_key($this->restPluginManager->getDefinitions(), $resources)) { | |
foreach ($enabled as $key => $resource) { | |
$plugin = $this->restPluginManager->getInstance(['id' => $key]); | |
$permissions = array_merge($permissions, $plugin->permissions()); | |
} | |
} | |
return $permissions; | |
} | |
} |