Apakah ada cara untuk menghindari pengguna anonim dapat melihat simpul dari jenis konten tertentu?

9

Apakah ada cara untuk menghindari pengguna anonim dapat melihat node dari jenis konten, seperti blok atau tampilan?

Saya dapat mengontrol akses dengan tampilan, tetapi jika saya tahu tautan untuk sebuah simpul, saya bisa melihatnya tanpa terlebih dahulu masuk.

Frank Giesecke
sumber

Jawaban:

10

Anda dapat mengontrol akses ke node di hook hook_node_access ():

mymodule.module:

use Drupal\node\NodeInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Access\AccessResult;

function mymodule_node_access(NodeInterface $node, $op, AccountInterface $account) {
  if ($account->isAnonymous() && $node->gettype() == 'article') {
    return AccessResult::forbidden()->cachePerPermissions();
  }
  return AccessResult::neutral()->cachePerPermissions();
}

Ini mengontrol akses langsung ke node, bukan akses dalam tampilan. Tapi inilah yang mungkin Anda inginkan.

4k4
sumber
Saya percaya bahwa untuk mengontrol akses dalam tampilan juga, Anda akan menggunakan hook_node_grants.
Jonathan
4

Taruhan terbaik Anda adalah dengan menggunakan Lubang Kelinci , atau Akses Konten saat rilisnya diperbarui.

Lubang kelinci

Rabbit Hole adalah modul yang menambahkan kemampuan untuk mengendalikan apa yang harus terjadi ketika suatu entitas dilihat pada halamannya sendiri. Mungkin Anda memiliki tipe konten yang tidak boleh ditampilkan di halamannya sendiri, seperti tipe konten gambar yang ditampilkan di carousel. Rabbit Hole dapat mencegah agar simpul ini tidak dapat diakses di halamannya sendiri, melalui simpul / xxx.

Akses Konten

Modul ini memungkinkan Anda untuk mengelola izin untuk jenis konten berdasarkan peran dan penulis. Ini memungkinkan Anda menentukan tampilan khusus, mengedit, dan menghapus izin untuk setiap jenis konten. Secara opsional, Anda dapat mengaktifkan per pengaturan akses konten, sehingga Anda dapat menyesuaikan akses untuk setiap node konten.

Perhatikan bahwa yang saya yakin Anda inginkan adalah memblokir semua akses ke sebuah simpul dari jenis konten - dan hanya Akses Konten yang akan memenuhi hal tersebut di atas Lubang Kelinci.

Di luar itu, saya pikir Anda akan melihat menerapkan kontrol akses Anda sendiri jika tidak ada yang sesuai.

Kevin
sumber
Maaf untuk mengutip jawaban Anda, Kevin, tetapi apakah Anda terbiasa dengan modul Grup ? Lihat tutorial video untuk memahami apa yang saya maksud ... BTW: untuk D7 saya juga merekomendasikan "Akses Konten".
Pierre.Vriens
2
Tidak sejak itu OG. Agak berat untuk menginstal kecuali ada kebutuhan dalam arti itu?
Kevin
" ... karena itu OG "? Bagaimana apanya? Dan tentang "berat": apakah Anda OG (jika demikian saya setuju) atau Grup (jika demikian saya tidak setuju)?
Pierre.Vriens
Saya selalu berpikir bahwa Grup adalah cabang dari OG untuk D8
Kevin
Maaf (lagi) Kevin, bukan itu masalahnya ... baca lebih lanjut .
Pierre.Vriens
1

Mungkin Anda ingin mencobanya menggunakan modul Grup , yang memungkinkan untuk membuat koleksi sewenang-wenang dari konten dan pengguna Anda di situs Anda, dan memberikan izin kontrol akses pada koleksi tersebut. Ini tersedia pada D7, dan memiliki versi D8 juga. Ini menciptakan kelompok sebagai entitas, menjadikannya sepenuhnya dapat ditelusuri, dapat diperluas, dan dapat diekspor. Setiap grup dapat memiliki pengguna, peran, dan izin yang melekat padanya (lihat " Apa berbagai peran yang didukung oleh modul Grup? " Untuk perincian lebih lanjut tentang itu).

Untuk pertanyaan khusus ini, Anda akan mengaktifkan gnodesubmodule, dan untuk setiap jenis grup Anda akan menentukan izin yang sesuai (lihat, edit, hapus, dll) untuk berbagai Jenis Konten.

Tampaknya Anda ingin memberikan akses ke apa, di Grup, disebut "Anggota" dan "Orang Luar" (= pengguna yang masuk yang bukan anggota grup). Tetapi Anda tidak mengizinkan akses ke "Anonim" (pengunjung situs yang tidak mencatatnya).

Sumber daya

Pierre
sumber
1

Anda dapat menggunakan modul Izin Node View .

Aktifkan dan kemudian Anda dapat menetapkan peran apa yang dapat melihat jenis konten apa di bawah jalur 'admin / orang / izin' di bawah bagian 'Izin tampilan simpul'


sumber