Мне просто нужно поле в типе контента, чтобы, когда пользователь создает новый контент, он мог выбрать, может ли этот контент просматриваться другими аутентифицированными пользователями или нет. Я предпочитаю делать это с полем выбора, отображающим «скрытый/видимый» для других пользователей, а затем устанавливать фактический доступ в пользовательском модуле с помощью некоторого хука.
Это то, что я пробовал до сих пор в своем пользовательском доступе к объекту ловушки модуля с типом контента test_adgang и проверкой field_test_adgang, но безрезультатно, то есть все аутентифицированные пользователи все еще могут видеть, если для поля установлено значение «skjult» (скрыто).
<?php
use Drupal\Core\Access\AccessResult;
function import_functions_entity_access(\Drupal\Core\Entity\EntityInterface $entity, $operation, \Drupal\Core\Session\AccountInterface $account) {
if ($entity->bundle() == 'test_adgang') {
if ($entity->field_test_adgang->value == 'skjult' && $operation == 'view' && in_array('godkendt bruger', $account->getRoles())) {
return AccessResult::forbidden();
} elseif ($entity->field_test_adgang->value == 'synlig' && $operation == 'view' && in_array('godkendt bruger', $account->getRoles())) {
return AccessResult::allowed();
}
}
}
?>