Ограничить доступ к пользовательским модулям в drupal
Я использую drupal 6, и я создал пользовательский модуль. Этот модуль состоит из формы, которую можно использовать для добавления записей в базу данных.
Но я видел, что ссылка на эту форму (http://localhost/drupal/my_module/form
) доступна всем пользователям, даже анонимным пользователям.
Я хочу ограничить доступ к этому модулю и форме для всех обычных пользователей. Я хочу, чтобы доступ к нему имел только администратор.
Я создал роль под названием Администратор и разрешил свой модуль только для администратора. Это все еще не работает.
Как я могу ограничить доступ к своему пользовательскому модулю?
1 answers
Объявите разрешение с помощью hook_perm(). Рекомендуется как-то использовать имя вашего модуля в разрешении или что-то уникальное для вашего модуля, чтобы избежать конфликтов (пространство имен отсутствует, имена разрешений являются глобальными).
В вашей реализации hook_menu() добавьте
'access arguments' => array('permission name here')
. Поскольку обратный вызов доступа по умолчанию равен user_access(), система меню вызоветuser_access('your permission name')
, чтобы проверить, имеет ли текущий пользователь доступ к этому пункту меню. Видеть hook_menu() документация для получения дополнительной информации. Вы также можете использоватьuser_access()
непосредственно в своем коде, если хотите проверить разрешения где-то еще; например, для блоков вы можете использовать эту функцию напрямую.Затем вы можете создать любые роли, какие захотите, и предоставить им разрешения вашего модуля в разделе администратор/пользователь/разрешения. Важное различие здесь заключается в том, что разрешения контролируются в модулях (которые могут быть написаны более или менее обобщенно), в то время как роли и разрешения, которые у них есть, зависят от конкретного сайта.
Затем обязательно перестройте меню (используя devel.module или сохранив форму модулей), и у вас все должно быть хорошо.