final class MutableResourceTypeLinkProvider in JSON:API Hypermedia 8
Link provider for mutable hypermedia controls.
This plugin provides links on mutable resource objects that indicate the clients ability to update and remove the context resource object. These presence of these links can express access control or other business logic so that those rules do not need to be duplicated in the client.
Plugin annotation
@JsonapiHypermediaLinkProvider(
id = "jsonapi_hypermedia.mutability_controls",
deriver = "Drupal\jsonapi_hypermedia\Plugin\Derivative\MutableResourceTypeLinkProviderDeriver",
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\jsonapi_hypermedia\Plugin\LinkProviderBase implements LinkProviderInterface
- class \Drupal\jsonapi_hypermedia\Plugin\jsonapi_hypermedia\LinkProvider\MutableResourceTypeLinkProvider implements ContainerFactoryPluginInterface uses ResourceObjectEntityLoaderTrait
- class \Drupal\jsonapi_hypermedia\Plugin\LinkProviderBase implements LinkProviderInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of MutableResourceTypeLinkProvider
File
- examples/
Plugin/ jsonapi_hypermedia/ LinkProvider/ MutableResourceTypeLinkProvider.php, line 25
Namespace
Drupal\jsonapi_hypermedia\Plugin\jsonapi_hypermedia\LinkProviderView source
final class MutableResourceTypeLinkProvider extends LinkProviderBase implements ContainerFactoryPluginInterface {
use ResourceObjectEntityLoaderTrait;
/**
* The JSON:API operation.
*
* @var string
*/
protected $operation;
/**
* {@inheritdoc}
*/
protected function __construct(array $configuration, string $plugin_id, mixed $plugin_definition) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
assert(!empty($configuration['operation']) && in_array($configuration['operation'], [
'update',
'remove',
], TRUE), "The operation must be set to either 'update' or 'remove'.");
$this->operation = $configuration['operation'];
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
$provider = new static($configuration, $plugin_id, $plugin_definition);
$provider
->setEntityRepository($container
->get('entity.repository'));
return $provider;
}
/**
* {@inheritdoc}
*/
public function getLink($resource_object) {
assert($resource_object instanceof ResourceObject);
$entity = $this
->loadEntityFromResourceObject($resource_object);
$entity_operation_mapping = [
'update' => 'update',
'remove' => 'delete',
];
$access = $entity
->access($entity_operation_mapping[$this->operation], NULL, TRUE);
return AccessRestrictedLink::createLink($access, new CacheableMetadata(), $resource_object
->toUrl(), $this
->getLinkRelationType());
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
LinkProviderBase:: |
public | function |
Gets the link object key for the provided link. Overrides LinkProviderInterface:: |
|
LinkProviderBase:: |
public | function |
Gets the link relation type for the provided link. Overrides LinkProviderInterface:: |
1 |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
MutableResourceTypeLinkProvider:: |
protected | property | The JSON:API operation. | |
MutableResourceTypeLinkProvider:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
MutableResourceTypeLinkProvider:: |
public | function |
Adds, alters or removes hyperlinks from a link collection. Overrides LinkProviderInterface:: |
|
MutableResourceTypeLinkProvider:: |
protected | function |
Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase:: |
|
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
ResourceObjectEntityLoaderTrait:: |
protected | property | The entity repository. | |
ResourceObjectEntityLoaderTrait:: |
public | function | Gets the entity represented by the given resource object. | |
ResourceObjectEntityLoaderTrait:: |
protected | function | Sets the entity repository. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |