hasPermission('administer media')) { return AccessResult::allowed()->cachePerPermissions(); } $is_owner = ($account->id() && $account->id() == $entity->getPublisherId()) ? TRUE : FALSE; switch ($operation) { case 'view': return AccessResult::allowedIf($account->hasPermission('view media') && $entity->status->value); case 'update': return AccessResult::allowedIf(($account->hasPermission('update media') && $is_owner) || $account->hasPermission('update any media'))->cachePerPermissions()->cachePerUser()->addCacheableDependency($entity); case 'delete': return AccessResult::allowedIf(($account->hasPermission('delete media') && $is_owner) || $account->hasPermission('delete any media'))->cachePerPermissions()->cachePerUser()->addCacheableDependency($entity); } // No opinion. return AccessResult::neutral()->cachePerPermissions(); } /** * {@inheritdoc} */ protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) { return AccessResult::allowedIfHasPermission($account, 'create media'); } }