public function DeleteAction::access in Entity Reference Integrity 8
Checks object access.
Parameters
mixed $object: The object to execute the action on.
\Drupal\Core\Session\AccountInterface $account: (optional) The user for which to check access, or NULL to check access for the current user. Defaults to NULL.
bool $return_as_object: (optional) Defaults to FALSE.
Return value
bool|\Drupal\Core\Access\AccessResultInterface The access result. Returns a boolean if $return_as_object is FALSE (this is the default) and otherwise an AccessResultInterface object. When a boolean is returned, the result of AccessInterface::isAllowed() is returned, i.e. TRUE means access is explicitly allowed, FALSE means access is either explicitly forbidden or "no opinion".
Overrides DeleteAction::access
File
- modules/
entity_reference_integrity_enforce/ src/ Plugin/ Action/ DeleteAction.php, line 23
Class
- DeleteAction
- Extends the core DeleteAction plugin.
Namespace
Drupal\entity_reference_integrity_enforce\Plugin\ActionCode
public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) {
// First check if the account has access.
$access = parent::access($object, $account, TRUE);
// Bail if the object is not an entity or access is denied.
if (!$object instanceof EntityInterface || !$access
->isAllowed()) {
return $return_as_object ? $access : $access
->isAllowed();
}
// Check for dependent entities.
$has_dependents = FALSE;
$enabled_entity_type_ids = \Drupal::config('entity_reference_integrity_enforce.settings')
->get('enabled_entity_type_ids');
if (in_array($object
->getEntityTypeId(), $enabled_entity_type_ids, TRUE)) {
$has_dependents = $this->entityTypeManager
->getHandler($object
->getEntityTypeId(), 'entity_reference_integrity')
->hasDependents($object);
}
// Deny access if it has dependents.
$reason = $this
->t('Can not delete the @entity_type_label %entity_label as it is being referenced by another entity.', [
'@entity_type_label' => $object
->getEntityType()
->getLabel(),
'%entity_label' => $object
->label(),
])
->render();
$integrity_access = AccessResult::forbiddenIf($has_dependents, $reason);
$access = $access
->orIf($integrity_access);
return $return_as_object ? $access : $access
->isAllowed();
}