Ограничить доступ к пользовательским модулям в drupal


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

Но я видел, что ссылка на эту форму (http://localhost/drupal/my_module/form) доступна всем пользователям, даже анонимным пользователям.

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

Я создал роль под названием Администратор и разрешил свой модуль только для администратора. Это все еще не работает.

Как я могу ограничить доступ к своему пользовательскому модулю?

 6
Author: shasi kanth, 2011-05-30

1 answers

  1. Объявите разрешение с помощью hook_perm(). Рекомендуется как-то использовать имя вашего модуля в разрешении или что-то уникальное для вашего модуля, чтобы избежать конфликтов (пространство имен отсутствует, имена разрешений являются глобальными).

  2. В вашей реализации hook_menu() добавьте 'access arguments' => array('permission name here'). Поскольку обратный вызов доступа по умолчанию равен user_access(), система меню вызовет user_access('your permission name'), чтобы проверить, имеет ли текущий пользователь доступ к этому пункту меню. Видеть hook_menu() документация для получения дополнительной информации. Вы также можете использовать user_access() непосредственно в своем коде, если хотите проверить разрешения где-то еще; например, для блоков вы можете использовать эту функцию напрямую.

  3. Затем вы можете создать любые роли, какие захотите, и предоставить им разрешения вашего модуля в разделе администратор/пользователь/разрешения. Важное различие здесь заключается в том, что разрешения контролируются в модулях (которые могут быть написаны более или менее обобщенно), в то время как роли и разрешения, которые у них есть, зависят от конкретного сайта.

Затем обязательно перестройте меню (используя devel.module или сохранив форму модулей), и у вас все должно быть хорошо.

 8
Author: Berdir, 2011-05-30 16:45:51