Детализация прав доступа пользователей к файловому полю Drupal

У меня есть сайт Drupal 6 с типом узла, который имеет необязательное, неограниченное значение, настройку Imagefield (Filefield / CCK). Разрешения на содержимое типа узла установлены так, чтобы позволить всем аутентифицированным пользователям редактировать эти узлы, и это здорово. Пользователи могут редактировать узел и прикреплять изображения к полю изображения, что тоже отлично.

Однако, когда пользователь редактирует один из этих узлов, он также может редактировать / удалять изображения Imagefield, загруженные другими пользователями. Как я могу запретить пользователю редактировать и / или удалять изображения Imagefield, которые не были загружены сами по себе?


person tyler.frankenstein    schedule 30.09.2011    source источник


Ответы (1)


Благодаря нескольким людям в канале # drupal-support в IRC я ​​смог получить ответ на этот вопрос. Вот пример решения на основе модуля:

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;
  }
}

Я чувствую себя глупо теперь, когда понимаю, что вся моя проблема заключалась в том, что я получал доступ, например, :

$form['#node']->field_my_images

вместо:

$form['field_my_images']

person tyler.frankenstein    schedule 30.09.2011