Drupal - безопасность проверяет все пути сайта по ролям - PullRequest
2 голосов
/ 03 сентября 2010

Я пишу это в отчаянной надежде, что кто-то уже сделал нечто подобное.Я бы написал на drupal.org - но этот сайт такой же удобный, как пинок в помидорах.

Я не знаю о вас, но когда я развиваюсь, я оставляю все свои пути на Drupal с помощьюоткройте доступ, а затем подумайте о том, чтобы заблокировать их с разрешениями доступа в конце.

Что было бы действительно полезно, так это модуль, который анализирует все доступные пути (в основном деконструируя содержимое таблицы menu_router) изатем пробуя их (curl?) по очереди, во время входа в систему как заданный пользователь с заданным набором ролей.

Результатом будет простая html-страница, сообщающая, какие пути доступны, а какие нет.

Я почти смирился с тем, чтобы сделать это сам, но если кто-нибудь узнает что-либо неопределенно похожее, я был бы очень рад услышать об этом.

Ура

ОБНОВЛЕНИЕ
Следуя замечательной идее Йорироу, я собрал простой модуль, чтобы обеспечить вывод, который я искал.

Вы можете получить код здесь: http://github.com/hymanroth/Path-Lockdown

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

Моей первой попыткой была бы функция, подобная этой:

function check_paths($uid) {
  global $user;
  $origuser = $user;
  $user = user_load($uid);

  $paths = array();
  foreach(array_keys(module_invoke_all('menu')) as $path) {
    $result = menu_execute_active_handler($path);
    if($result != MENU_ACCESS_DENIED && $result != MENU_NOT_FOUND) {
      $paths[$path] = TRUE;
    }
    else {
      $paths[$path] = FALSE;
    }
  }

  $user = $origuser;

  return $paths;
}

Это хорошо в первый раз, но не может обрабатывать пути с подстановочными знаками (% в пути меню).Загрузка всех возможных значений может быть опцией, но она работает не во всех случаях.Например, если у вас есть% узел, например, вы можете использовать node_load, но если у вас есть только%, то вы не знаете, что загружать.Кроме того, обычной практикой является пропуск последнего аргумента, который является переменной, для правильной обработки, если аргумент не задан (например, отображать все элементы).

Кроме того, это может быть хорошей идеейинтегрировать это решение с системой тестирования Drupal.

1 голос
/ 04 сентября 2010

Я провел небольшое исследование и не смог ничего найти. Хотя я склонен думать, что есть способ проверить путь доступа через Drupal API, в отличие от CURL - но, пожалуйста, держите меня в курсе ваших достижений / дайте мне знать, если вы хотите помочь в разработке. Это было бы отличным дополнением к модулям Drupal.

...