it-swarm-id.com

Bagaimana pengguna dapat mengakses hanya satu node tertentu, dan tidak semua node dari jenis itu?

Saya memiliki pengguna dengan tampilan dan pengeditan hak untuk jenis konten tertentu. Ini memberikan hak istimewa kepada semua pengguna untuk melihat dan mengedit semua node dari jenis itu. Tapi sebenarnya, saya ingin membuat node unik untuk setiap pengguna, sehingga hanya pengguna yang dapat melihat dan mengeditnya. Bagaimana saya bisa melakukan ini di Drupal 7?

10
Ek Kosmos

Menggunakan modul yang ada, Anda dapat melakukannya dengan Akses Konten , yang (bila digunakan bersama ACL ) memungkinkan untuk mengatur izin untuk mengakses node untuk setiap pengguna.
Ini berarti bahwa Anda perlu mengatur izin akses secara manual untuk setiap node.

Jika Anda secara manual membuat node, dan kemudian Anda ingin memastikan bahwa hanya pengguna yang ditetapkan sebagai pemilik node yang dapat melihat (dan mengedit) itu, maka Anda dapat membuat modul khusus (yang berarti modul yang digunakan untuk situs Anda), dan terapkan hook_node_access() sebagai berikut (kode telah ditulis untuk membuatnya lebih mudah dibaca):

function mymodule_node_access($node, $op, $account) {
  // We are interested to existing objects. When the node is being created, Drupal passed the node type instead of the node object. 
  if (is_object($node)) {
    $bool = (
      ($node->type == 'the node type you need to check') && 
      (($op == 'view') || ($op == 'update'))
    );
    if ($bool) {
      if ($account->uid == $node->uid) {
        return NODE_ACCESS_ALLOW;
      }
      else {
        return NODE_ACCESS_DENY;
      }
    }
  }

  return NODE_ACCESS_IGNORE;
}

Menggunakan implementasi pengait ini, Anda tidak perlu mengedit secara manual izin akses yang diberikan untuk setiap node dari jenis konten yang Anda buat. Mengubah pemilik node juga akan lebih mudah, karena Anda tidak perlu mengubah izin akses dari node itu; kode akan secara otomatis memberikan pembaruan dan melihat izin untuk pengguna yang ditetapkan sebagai pemilik (atau penulis) node.

11
kiamlaluno

Anda tidak memerlukan modul khusus atau kode khusus untuk melakukan ini. Cukup buat secara manual simpul-simpul itu, tetapkan pengguna yang sesuai sebagai pemilik (penulis) dari simpul-simpul itu dan tetapkan izin untuk tipe konten ini untuk mengedit konten sendiri saja (tidak mengedit konten apa pun dari jenis ini) dan Anda selesai.

5
Petr Svehla

Apa yang Anda bicarakan adalah Drupal kontrol akses node, yang merupakan subjek besar.

Dukungan built-in inti untuk kontrol akses node agak biasa, dan untuk mengontrol akses untuk melihat node berdasarkan peran, Anda harus menggunakan semacam modul kontrol akses node. Ada halaman di Drupal.org mencantumkan semua modul akses simpul , dengan masing-masing ulasan kapsul. Saya sarankan Anda melihat halaman itu untuk melihat apakah Anda dapat menemukan modul yang cocok untuk mengontrol akses.

Modul Flexi Access tampaknya merupakan modul yang paling cocok dengan kebutuhan Anda, karena fungsi utamanya adalah membiarkan Anda mengontrol akses untuk pengguna individu, bukan dengan peran atau istilah taksonomi.

Ini adalah modul kecil yang memungkinkan Anda mengatur ACL (daftar kontrol akses) untuk masing-masing pengguna. Ini pada dasarnya adalah antarmuka pengguna untuk modul ACL , jadi Anda perlu menginstalnya juga.

Itu tidak memiliki beberapa fitur dari modul kontrol akses yang lebih maju, seperti Akses Konten , tetapi itu secara aktif dipelihara dan saat ini tidak ada bug terbuka dalam antrian masalahnya.

Pengungkapan: Saya adalah pengelola Flexi Access.

1
Free Radical