2009-08-24 3 views
0

Чтобы убедиться, что мой сайт является безопасным, и все разрешения установлены правильно, я ищу способ создания списка каждой страницы, к которой имеет доступ определенный пользователь. (Итак ... каждый обратный вызов в меню, где user_access() возвращает TRUE для данного uid).Список контроля доступа Drupal

Что-то, что будет выглядеть следующим образом:

$ user-> UID == 0

Главная

Фотографии

Контакты

$ USER- > uid = 23

Главная

Фотографии

Контакты

Форум

Блог

т.д.

ответ

0

Это на самом деле не представляется возможным в Drupal, так как там re real real pages с точки зрения системы, только функции обратного вызова, принимающие аргументы. Для уточнения, думает стандартный путь для узла страниц:

node/[nid] 

Это будет принимать произвольное число для [нидь], а затем функцию обратного вызова для node/% пути будет пытаться найти узел с согласующим ид - это только после ищет, что Drupal «знает», если страница на самом деле существует.

То же самое верно для всех других путей, так что в основном вы смотрите на (почти) неограниченное количество потенциальных страниц, не имея возможности узнать, не проверяя пути, если они на самом деле «существуют» или конец в a 404.

Что вы могли сделать это на столе menu_router. Там вы найдете все зарегистрированные пути, а также функции обратного вызова и access_callback. Для тех, кто может выполнить проверку для каждого пользователя, но результат будет трудно интерпретировать, поскольку путей достаточно и будет содержать много заполнителей.

Аналогичный вариант существует, если вы используете URL-псевдонимы/pathauto. Затем вы можете взять таблицу url_alias и сделать чек для всех записей. Но поскольку вы заинтересованы в обеспечении безопасности своего сайта, это не поможет, поскольку вы пропустите любой путь, который не имеет псевдонима - и, как сказано выше, это бесчисленное множество.

+0

Хорошо. Что делать, если мне нужен список доступных узлов? –

+0

Проверьте функцию 'node_access()'. Вы можете перебрать все узлы и проверить результат 'node_access ($ op, $ node, $ account)' для возможных значений $ op (просмотр, обновление, создание, удаление) для пользователей ($ account) Заинтересованность. Конечно, выполнимая, но все же довольно некоторая обработка, учитывая достаточное количество узлов и пользователей ... –