Problem/Motivation

When viewing a Commerce Product entity (Drupal\commerce_product\Entity\Product) with a term reference field that's access controlled, it results in this PHP notice:

Notice: Undefined property: Drupal\commerce_product\Plugin\Field\ComputedDefaultVariation::$entity in Drupal\permissions_by_entity\Service\AccessChecker->isAccessControlled() (line 182 of modules\contrib\permissions_by_term\modules\permissions_by_entity\src\Service\AccessChecker.php).

Drupal\permissions_by_entity\Service\AccessChecker->isAccessControlled(Object, ) (Line: 228)
Drupal\permissions_by_entity\Service\AccessChecker->isAccessControlled(Object) (Line: 32)
permissions_by_entity_entity_access(Object, 'view', Object)
call_user_func_array('permissions_by_entity_entity_access', Array) (Line: 403)
Drupal\Core\Extension\ModuleHandler->invokeAll('entity_access', Array) (Line: 96)
Drupal\Core\Entity\EntityAccessControlHandler->access(Object, 'view', Object, ) (Line: 709)
Drupal\Core\Entity\ContentEntityBase->access('view') (Line: 242)
Drupal\commerce_product\Entity\Product->getDefaultVariation() (Line: 21)
Drupal\commerce_product\Plugin\Field\ComputedDefaultVariation->computeValue() (Line: 34)
Drupal\commerce_product\Plugin\Field\ComputedDefaultVariation->ensureComputedValue() (Line: 81)
Drupal\commerce_product\Plugin\Field\ComputedDefaultVariation->get(0) (Line: 169)
Drupal\Core\TypedData\Plugin\DataType\ItemList->first() (Line: 115)
Drupal\Core\Field\FieldItemList->__get('entity') (Line: 182)
Drupal\permissions_by_entity\Service\AccessChecker->isAccessControlled(Object, ) (Line: 228)
Drupal\permissions_by_entity\Service\AccessChecker->isAccessControlled(Object, ) (Line: 228)
Drupal\permissions_by_entity\Service\AccessChecker->isAccessControlled(Object) (Line: 32)
permissions_by_entity_entity_access(Object, 'view', Object)
call_user_func_array('permissions_by_entity_entity_access', Array) (Line: 403)
Drupal\Core\Extension\ModuleHandler->invokeAll('entity_access', Array) (Line: 96)
Drupal\Core\Entity\EntityAccessControlHandler->access(Object, 'view', Object, 1) (Line: 709)
Drupal\Core\Entity\ContentEntityBase->access('view', Object, 1) (Line: 65)
Drupal\Core\Entity\EntityAccessCheck->access(Object, Object, Object)
call_user_func_array(Array, Array) (Line: 159)
Drupal\Core\Access\AccessManager->performCheck('access_check.entity', Object) (Line: 135)
Drupal\Core\Access\AccessManager->check(Object, Object, Object, 1) (Line: 112)
Drupal\Core\Access\AccessManager->checkRequest(Object, Object, 1) (Line: 109)
Drupal\Core\Routing\AccessAwareRouter->checkAccess(Object) (Line: 94)
Drupal\Core\Routing\AccessAwareRouter->matchRequest(Object) (Line: 113)
Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest(Object, 'kernel.request', Object)
call_user_func(Array, Object, 'kernel.request', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.request', Object) (Line: 127)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 106)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 50)
Drupal\ban\BanMiddleware->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 49)
Drupal\remove_http_headers\StackMiddleware\RemoveHttpHeadersMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)

Steps to reproduce

Commerce core 8.x-2.26
Permissions by Term 8.x-2.34

Proposed resolution

Use isset($something->entity) to check for referenced entities rather than $something->entity in Drupal\permissions_by_entity\Service\AccessChecker.

Remaining tasks

See above.

User interface changes

None.

API changes

None.

Data model changes

None.

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

Ambient.Impact created an issue. See original summary.

scottsawyer’s picture

Version: 8.x-2.34 » 3.1.21
Status: Active » Needs work

I think the MR looks good, but needs to be updated against the current branch. I am not seeing the dev branch in the list of versions, so setting to the most current release.

scottsawyer’s picture

Status: Needs work » Needs review

Added a new MR, please review.

keshavv’s picture

Status: Needs review » Reviewed & tested by the community

I have reviewed the MR. It is working as accepted. We can merge it.

graber’s picture

Maintainers please wake up.

marcoliver made their first commit to this issue’s fork.

marcoliver’s picture

Status: Reviewed & tested by the community » Fixed

Thanks everyone! Merging in a sec. Will tag a release later today or tomorrow.

marcoliver’s picture

Status: Fixed » Closed (fixed)
marcoliver’s picture

Status: Closed (fixed) » Fixed

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.