Как мне отладить разрешения в Drupal 7?
Я использую основные отчеты, журналы ошибок, журналы ошибок модуля devel, backtrace и блок доступа к узлам, но иногда этого недостаточно. Что еще я должен проверить, чтобы выяснить, почему определенные поля, представления или блоки не отображаются для пользователя?
Я также обнаружил, что есть модуль для Drupal 6 для создания отчетов о вызываемых разрешениях, но он не доступен для Drupal 7.
Я использую различные разрешения сторонних модулей:
- devel node access 7.x-1.x-dev
- fast permissions administration 7.x-2.0
- organic groups access control 7.x-1.x
- profile2 group access 7.x-1.x-dev
- ur-node access 7.x-1.x-dev
Ответы:
Один из способов сделать это - создать собственный модуль, распечатать информацию о доступе на каждой странице, каждом узле, каждом блоке.
Функция menu_get_item () возвращает элемент маршрутизатора, который имеет свойство access_arguments для текущей страницы.
Затем вы можете hook_page_alter, чтобы отобразить информацию о доступе в верхней части каждой страницы.
Далее вы можете отобразить информацию о разрешениях блока следующим образом:
И так далее, в основном та же концепция, вы можете сделать то же самое для узла, формы, представления. Надеюсь это поможет.
источник
yourmodule_get_page_access()
не имеют смысла, вы можете посмотреть$router_item['access_callback']
и затем найти функцию с таким именем в соответствующих модулях, чтобы посмотреть, что там происходит. Отличный ответ.Отредактируйте основной файл модуля User; найдите
user_access()
функцию, добавьте 2 строки передreturn
оператором и следите за журналом ошибок PHP.источник
error_log
не выводится на экран. Для моей установки он записал в журнал ошибок apache. php.net/manual/en/function.error-log.phpПохоже, что у вас уже есть все инструменты на основе графического интерфейса для устранения проблем с разрешениями. Еще один продвинутый (и, вероятно, более сложный) трюк, который я эффективно использовал в прошлом:
Во многих случаях запросы, которые выплевывает Views, довольно сложны (шок полон объединений), и для их создания вручную потребовалось бы немного больше времени (плюс это было бы немного более подверженным ошибкам). Также этот подход гарантирует, что вы тестируете против того, что видит пользователь. Если у вас включены какие-либо модули разрешений (которые используют разрешения ядра Drupal), их объединения таблиц будут отображаться в запросе, используемом Views. Получив этот запрос, я настраиваю его, чтобы показать, например, сколько узлов типа контента x разрешено для роли x. Это настолько точно и детально, насколько это возможно. И это мои "продвинутые" отчеты.
источник
С Drupal я должен использовать отладчик несколько раз (xdebug с netbeans). Многие функции вызываются косвенно, делая практически невозможным отслеживание того, что действительно добавляется глобально, только читая код, печатая обратную трассировку или проверяя окончательный результат.
источник