Код для доступа к странице


Я хотел бы использовать PHP-код в узлах определенного типа контента. Я могу проверить разрешение пользователя с помощью глобального $user, может ли пользователь получить доступ к узлу.

Существует ли какой-либо модуль для настройки представления содержимого созданной страницы?
Безопасно ли проверять доступ к странице с помощью этого кода?

global $user;

// Check to see if $user has the administrator role.
if (in_array('administrator', array_values($user->roles))) {
  // Do something.
}
 2
Author: kiamlaluno, 2011-04-19

2 answers

Я думаю, что вы ищете модуль доступа к узлу. Их много, например http://drupal.org/project/content_access (настройте доступ с помощью ролей напрямую) или http://drupal.org/project/tac_lite (контролируйте доступ, добавляя специальные термины таксономии) и многое другое.

Для вашего второго вопроса вы всегда должны определять некоторые разрешения (с помощью hook_perm в D6, hook_permission() в D7), а затем проверить это. Это позволяет настроить через пользовательский интерфейс, какие роли имеют это разрешение, и код не привязан к вашей конкретной конфигурации.

 6
Author: Berdir, 2011-04-19 05:53:18

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

Помимо модулей, о которых сообщает Berdir, если тип контента - страница книги, то вы можете использовать Доступ к книге, который специфичен для страниц книг и позволяет настроить пользователей, которые могут перемещать страницы книги между книгами.

 1
Author: kiamlaluno, 2011-04-19 12:11:02