eca-1.0.x-dev/modules/access/src/Event/EntityAccess.php
modules/access/src/Event/EntityAccess.php
<?php
namespace Drupal\eca_access\Event;
use Drupal\Core\Access\AccessResultInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\eca\Event\AccessEventInterface;
use Drupal\eca\Event\EntityApplianceTrait;
use Drupal\eca\Event\EntityEventInterface;
use Drupal\eca\Plugin\DataType\DataTransferObject;
use Symfony\Contracts\EventDispatcher\Event;
/**
* Dispatched when an entity is being asked for access.
*
* @internal
* This class is not meant to be used as a public API. It is subject for name
* change or may be removed completely, also on minor version updates.
*/
class EntityAccess extends Event implements AccessEventInterface, EntityEventInterface {
use EntityApplianceTrait;
/**
* The entity being asked for access.
*
* @var \Drupal\Core\Entity\EntityInterface
*/
protected EntityInterface $entity;
/**
* The operation to perform.
*
* @var string
*/
protected string $operation;
/**
* The account that asks for access.
*
* @var \Drupal\Core\Session\AccountInterface
*/
protected AccountInterface $account;
/**
* The access result.
*
* @var \Drupal\Core\Access\AccessResultInterface|null
*/
protected ?AccessResultInterface $accessResult = NULL;
/**
* An instance holding event data accessible as Token.
*
* @var \Drupal\eca\Plugin\DataType\DataTransferObject|null
*/
protected ?DataTransferObject $eventData = NULL;
/**
* Constructs a new EntityAccess object.
*
* @param \Drupal\Core\Entity\EntityInterface $entity
* The entity being asked for access.
* @param string $operation
* The operation to perform.
* @param \Drupal\Core\Session\AccountInterface $account
* The account that asks for access.
*/
public function __construct(EntityInterface $entity, string $operation, AccountInterface $account) {
$this->entity = $entity;
$this->operation = $operation;
$this->account = $account;
}
/**
* {@inheritdoc}
*/
public function getEntity(): EntityInterface {
return $this->entity;
}
/**
* Get the operation to perform.
*
* @return string
* The operation.
*/
public function getOperation(): string {
return $this->operation;
}
/**
* {@inheritdoc}
*/
public function getAccount(): AccountInterface {
return $this->account;
}
/**
* {@inheritdoc}
*/
public function getAccessResult(): ?AccessResultInterface {
return $this->accessResult;
}
/**
* {@inheritdoc}
*/
public function setAccessResult(AccessResultInterface $result): EntityAccess {
if ($this->accessResult === NULL) {
$this->accessResult = $result;
}
else {
$this->accessResult = $this->accessResult->orIf($result);
}
return $this;
}
}
