diff --git a/modules/group_recurring_events_series/src/Access/GroupEventInstanceHandler.php b/modules/group_recurring_events_series/src/Access/GroupEventInstanceHandler.php new file mode 100644 index 0000000000000000000000000000000000000000..2922bd15870ccd343d8c21350fc5174d31272fd7 --- /dev/null +++ b/modules/group_recurring_events_series/src/Access/GroupEventInstanceHandler.php @@ -0,0 +1,27 @@ +<?php + +namespace Drupal\group_recurring_events_series\Access; + +use Drupal\Core\Access\AccessResult; +use Drupal\Core\Entity\EntityAccessControlHandler; +use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Session\AccountInterface; + +use Drupal\recurring_events\Entity\EventSeries; +use Drupal\recurring_events\EventInstanceAccessControlHandler; + +class GroupEventInstanceHandler extends EventInstanceAccessControlHandler { + protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { + $result = parent::checkAccess($entity, $operation, $account); + if(!$result->isAllowed()) { + // Need GroupContentAccessControlHandler not EventSeriesAccessControlHandler + $manager = \Drupal::service('plugin.manager.group_content_enabler'); + $type = 'group_recurring_events_series:' . $entity->getType(); + if($manager->hasHandler($type, 'access')) { + $handler = $manager->getAccessControlHandler($type); + $result = $handler->entityAccess($entity->getEventSeries(), $operation, $account, TRUE); + } + } + return $result; + } +}