isPublished()) { return AccessResult::allowedIfHasPermission($account, 'view unpublished case entities'); } return AccessResult::allowedIf( $account->hasPermission('view published case entities') || CaseInvolvement::userIsInvolved($account, $entity) ); case 'update': // you can edit the case only if a) you can see it and b) you have the permission to edit cases. return AccessResult::allowedIf( $account->hasPermission('edit case entities') && ($account->hasPermission('view published case entities') || CaseInvolvement::userIsInvolved($account, $entity)) ); case 'delete': // you can delete the case only if a) you can see it and b) you have the permission to delete cases. return AccessResult::allowedIf( $account->hasPermission('delete case entities') && ($account->hasPermission('view published case entities') || CaseInvolvement::userIsInvolved($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 case entities'); } }