restPluginManager = $rest_plugin_manager; $this->resourceConfigStorage = $entity_type_manager->getStorage('rest_resource_config'); } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static($container->get('plugin.manager.rest'), $container->get('entity_type.manager')); } /** * Returns an array of REST permissions. * * @return array */ public function permissions() { $permissions = []; /** @var \Drupal\rest\RestResourceConfigInterface[] $resource_configs */ $resource_configs = $this->resourceConfigStorage->loadMultiple(); foreach ($resource_configs as $resource_config) { $plugin = $resource_config->getResourcePlugin(); // Add the rest resource configuration entity as a dependency to the // permissions. $permissions += array_map(function (array $permission_info) use ($resource_config) { $merge_info['dependencies'][$resource_config->getConfigDependencyKey()] = [ $resource_config->getConfigDependencyName(), ]; return NestedArray::mergeDeep($permission_info, $merge_info); }, $plugin->permissions()); } return $permissions; } }