Tôi gặp sự cố với thực thể đoạn_type, khi tôi thêm một đoạn_type vào một nút, có các mục đoạn văn bên trong và tôi đặt trạng thái chưa xuất bản, người dùng ẩn danh vẫn có thể nhìn thấy.
Tôi cố gắng truy cập tùy chỉnh theo cách khác:
/**
* Triển khai hook_ENTITY_TYPE_access().
* ENTITY_TYPE : đoạn_loại
*/
hàm my_module_paragraphs_type_access(
Drupal\Core\Entity\EntityInterface $entity,
hoạt động $,
\Drupal\Core\Session\AccountInterface $account
) {
tiếng vang '<pre>';
var_dump('my_module_paragraphs_type_access');
var_dump($ Operation);
var_dump($account);
lối ra();
// Ẩn đoạn cho người dùng ẩn danh nếu không được xuất bản
nếu ($hoạt động == 'xem'
&& !$entity->isPublished()
&& ($account->isAnonymous() ||
!$account->hasPermission('xem các đoạn chưa xuất bản'))
) {
trả về \Drupal\Core\Access\AccessResult::forbidden();
}
trả về \Drupal\Core\Access\AccessResult::allowed();
}
Nó không làm việc, var_dump('my_module_paragraphs_type_access');
nó không bao giờ được thực hiện
Hoặc một lớp tùy chỉnh mở rộng ParagraphsTypeAccessControlHandler :
<?php
sử dụng Drupal\Core\Access\AccessResult;
sử dụng Drupal\Core\Entity\EntityInterface;
sử dụng Drupal\Core\Session\AccountInterface;
sử dụng Drupal\paragraphs\ParagraphsTypeAccessControlHandler;
/*
* Thêm quyền truy cập đoạn_type tùy chỉnh
*/
lớp CustomParagraphsTypeAccessControlHandler mở rộng Đoạn văn TypeAccessControlHandler {
/**
* {@inheritdoc}
*/
chức năng được bảo vệ checkAccess(EntityInterface $entity, $operation, AccountInterface $account) {
chuyển ($hoạt động) {
trường hợp 'xem các đoạn chưa được xuất bản':
if($account->isAnonymous())
trả về AccessResult::forbidden();
nghỉ;
trường hợp 'xem nhãn':
return AccessResult::allowedIfHasPermission($account, 'truy cập nội dung');
mặc định:
trả về cha mẹ::checkAccess($entity, $operation, $account);
}
}
}
nhưng vẫn vậy...
Một kế hoạch khác để ẩn chúng với người dùng ẩn danh ?
Tôi tìm thấy một vấn đề này:https://www.drupal.org/project/paragraphs/issues/3095959#comment-13363535