Granularitas Izin Pengguna Filefield Drupal

Saya memiliki situs Drupal 6 dengan tipe node yang memiliki nilai opsional dan tidak terbatas, pengaturan Imagefield (Filefield/CCK). Izin konten jenis node diatur untuk memungkinkan semua pengguna yang diautentikasi dapat mengedit node tersebut, dan ini sangat bagus. Pengguna dapat mengedit node dan melampirkan gambar ke Imagefield, juga bagus.

Namun, saat pengguna mengedit salah satu node ini, mereka juga dapat mengedit/menghapus gambar Imagefield yang diunggah oleh pengguna lain. Bagaimana cara mencegah pengguna mengedit dan/atau menghapus gambar Imagefield yang tidak diunggah sendiri?


person tyler.frankenstein    schedule 30.09.2011    source sumber


Jawaban (1)


Terima kasih kepada beberapa orang di saluran #drupal-support di IRC, saya bisa mendapatkan jawaban atas pertanyaan ini. Berikut adalah contoh solusi berbasis modul:

function my_module_form_alter(&$form, &$form_state, $form_id) {
  global $user;
  switch ($form['type']['#value']) {
    case "my_content_type":
      if (user_access("administer nodes")) { break; }
      foreach (array_keys($form['field_my_images']) as $key) {
        if (!is_numeric($key)) { continue; }
        if ($form['field_my_images'][$key]['#default_value']['fid']) {
          if ($form['field_my_images'][$key]['#default_value']['uid'] != $user->uid) {
            $form['field_my_images'][$key]['#access'] = false;
          }
        }
      }
      break;
  }
}

Saya merasa konyol sekarang karena saya menyadari seluruh masalah saya adalah karena saya mengakses mis. :

$form['#node']->field_my_images

alih-alih:

$form['field_my_images']

person tyler.frankenstein    schedule 30.09.2011