Drupal Access Control List - PullRequest
       7

Drupal Access Control List

0 голосов
/ 25 августа 2009

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

Нечто похожее на это:

$ user-> uid == 0

Главная

Фотографии

Свяжитесь с нами

$ user-> uid = 23

Home

Фотографии

Свяжитесь с нами

Форум

Блог

и т.д.

1 Ответ

0 голосов
/ 25 августа 2009

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

node/[nid]

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

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

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

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

...