eca-1.0.x-dev/src/Token/CurrentUserDataProvider.php
src/Token/CurrentUserDataProvider.php
<?php
namespace Drupal\eca\Token;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Session\AccountProxyInterface;
/**
* Current user as data provider for the Token environment.
*/
class CurrentUserDataProvider implements DataProviderInterface {
/**
* The current user.
*
* @var \Drupal\Core\Session\AccountProxyInterface
*/
protected AccountProxyInterface $currentUser;
/**
* The user entity storage.
*
* @var \Drupal\Core\Entity\EntityStorageInterface
*/
protected EntityStorageInterface $userStorage;
/**
* The CurrentUserDataProvider constructor.
*
* @param \Drupal\Core\Session\AccountProxyInterface $current_user
* The current user.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager service.
*
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
*/
public function __construct(AccountProxyInterface $current_user, EntityTypeManagerInterface $entity_type_manager) {
$this->currentUser = $current_user;
$this->userStorage = $entity_type_manager->getStorage('user');
}
/**
* {@inheritdoc}
*/
public function getData(string $key): ?EntityInterface {
if ($key === 'user' || $key === 'current_user') {
return $this->userStorage->load($this->currentUser->id());
}
return NULL;
}
/**
* {@inheritdoc}
*/
public function hasData(string $key): bool {
return $this->getData($key) !== NULL;
}
}
