Как создать пользовательскую функцию доступа для редактирования типа узла в Drupal? - PullRequest
2 голосов
/ 20 ноября 2010

У меня есть тип узла, который должен редактироваться пользователями только при определенных обстоятельствах, выходящих за рамки прав, которые имеет их роль. Я делаю это в пользовательском модуле.

Я бы хотел убрать возможность даже видеть вкладку редактирования, а не просто добавить функцию проверки в форму, которая будет предупреждать пользователя после отправки формы.

Мне нужно добавить какую-то функцию доступа. Кто-нибудь знает, как это сделать?

Заранее спасибо.

- Обновление -

Теперь у меня есть 2 способа, которые должны работать.

1) Использование hook_nodeapi:

function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  switch($op) {
    case 'prepare':
      if(!mymodule_access_function($node)) {
        $_REQUEST['destination'] = 'my_access_denied_page';
        // rest of function

2) Я могу вставить функцию обратного вызова доступа в пункт меню, используя hook_menu_alter.

Для моих целей 2 имеет больше смысла. Я думал, что изложу код для (1), хотя, поскольку это был ответ, приведенный на этой странице, и он работает.

Ответы [ 2 ]

3 голосов
/ 22 ноября 2010

Для видимости вкладок вы можете изменить тематический вывод в любом месте: от хука модуля до шаблона темы или патча CSS.В зависимости от требований к видимости данных и проблемам производительности некоторые решения лучше, чем другие.Нам нужно больше подробностей о том, какой тип обработки вам необходим.

Для доступа hook_nodeapi () , $ op равно 'подготовьте ', запустите свой пользовательский код для $ node на этом этапе и решите, что вы хотите сделать (например, перенаправить на другую форму, если требование отсутствует, или на страницу с отказом в доступе).

Редактирование: перенаправление обычно выполняется с помощью $ _ REQUEST ['destination'] = 'destination / alias' (не прерывает выполнение) , иногда drupal_goto ('destination / alias') (прерывает выполнение) подходит, но часто не работает.Пожалуйста, следите за тем, чтобы в вашем проекте отслеживались перенаправления, так как в случае нескольких логических условий вы можете столкнуться с нежелательным и трудным для отладки поведением.

1 голос
/ 20 ноября 2010

Каждый тип контента имеет настройки разрешения по умолчанию в admin/user/permissions для создания, редактирования, удаления узла.Вы можете назначить анонимным или аутентифицированным пользователям.Если вы хотите назначить группу, создайте другую роль и назначьте разрешение, как указано выше.

...