You are here

protected function EntityAccessControlHandlerBase::checkCreateAccess in Entity API 8

Performs create access checks.

This method is supposed to be overwritten by extending classes that do their own custom access checking.

Parameters

\Drupal\Core\Session\AccountInterface $account: The user for which to check access.

array $context: An array of key-value pairs to pass additional context when needed.

string|null $entity_bundle: (optional) The bundle of the entity. Required if the entity supports bundles, defaults to NULL otherwise.

Return value

\Drupal\Core\Access\AccessResultInterface The access result.

Overrides EntityAccessControlHandler::checkCreateAccess

File

src/EntityAccessControlHandlerBase.php, line 104

Class

EntityAccessControlHandlerBase
@internal

Namespace

Drupal\entity

Code

protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) {
  $result = parent::checkCreateAccess($account, $context, $entity_bundle);
  if ($result
    ->isNeutral()) {
    $permissions = [
      $this->entityType
        ->getAdminPermission() ?: 'administer ' . $this->entityTypeId,
      'create ' . $this->entityTypeId,
    ];
    if ($entity_bundle) {
      $permissions[] = 'create ' . $entity_bundle . ' ' . $this->entityTypeId;
    }
    $result = AccessResult::allowedIfHasPermissions($account, $permissions, 'OR');
  }
  return $result;
}