protected function FieldBlock::blockAccess in Drupal 9
Same name and namespace in other branches
- 8 core/modules/layout_builder/src/Plugin/Block/FieldBlock.php \Drupal\layout_builder\Plugin\Block\FieldBlock::blockAccess()
Indicates whether the block should be shown.
Blocks with specific access checking should override this method rather than access(), in order to avoid repeating the handling of the $return_as_object argument.
Parameters
\Drupal\Core\Session\AccountInterface $account: The user session for which to check access.
Return value
\Drupal\Core\Access\AccessResult The access result.
Overrides BlockPluginTrait::blockAccess
See also
File
- core/
modules/ layout_builder/ src/ Plugin/ Block/ FieldBlock.php, line 186
Class
- FieldBlock
- Provides a block that renders a field from an entity.
Namespace
Drupal\layout_builder\Plugin\BlockCode
protected function blockAccess(AccountInterface $account) {
$entity = $this
->getEntity();
// First consult the entity.
$access = $entity
->access('view', $account, TRUE);
if (!$access
->isAllowed()) {
return $access;
}
// Check that the entity in question has this field.
if (!$entity instanceof FieldableEntityInterface || !$entity
->hasField($this->fieldName)) {
return $access
->andIf(AccessResult::forbidden());
}
// Check field access.
$field = $entity
->get($this->fieldName);
$access = $access
->andIf($field
->access('view', $account, TRUE));
if (!$access
->isAllowed()) {
return $access;
}
// Check to see if the field has any values.
if ($field
->isEmpty()) {
return $access
->andIf(AccessResult::forbidden());
}
return $access;
}