isPublished()) { return AccessResult::allowedIfHasPermission($account, 'view unpublished activity entities'); } return AccessResult::allowedIf( $account->hasPermission('view published case entities') // activity permissions are inherited from case || CaseInvolvement::userIsInvolved_activity($account, $entity) ); case 'update': // allowed only if a) they can see the case the activity is on and b) they can edit activities if (!$account->hasPermission('edit activity entities')) { return AccessResult::forbidden(); } else { return AccessResult::allowedIf( $account->hasPermission('view published case entities') || CaseInvolvement::userIsInvolved_activity($account, $entity) ); } case 'delete': // allowed only if a) they can see the case the activity is on and b) they can delete activities if (!$account->hasPermission('delete activity entities')) { return AccessResult::forbidden(); } else { return AccessResult::allowedIf( $account->hasPermission('view published case entities') || CaseInvolvement::userIsInvolved_activity($account, $entity) ); } } // Unknown operation, no opinion. return AccessResult::neutral(); } /** * {@inheritdoc} */ protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) { return AccessResult::allowedIfHasPermission($account, 'add activity entities'); } }