Drupal 6 дает разрешение одной странице модуля для определенной роли - PullRequest
0 голосов
/ 22 ноября 2011

У меня есть модуль, который создает несколько admin/settings/modname страниц.

Я создал новую роль.

Я хочу, чтобы эта роль имела доступ только к одной конкретной странице, скажем admin/setting/modname/custom1

Как бы я назначил право доступа только для этой страницы этой роли?

Было бы это сделано в моем hook_menu в access arguments?

Правотеперь роль получает отказ в доступе на всех страницах.

1 Ответ

2 голосов
/ 22 ноября 2011

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

function mymodule_perm() {
  return array('my module permission');
}

А затем в вашем пункте меню в hook_menu используйте access arguments, как вы предлагаете:

function mymodule_menu() {
  $items['admin/setting/modname/custom1'] = array(
    'title' => 'Settings',
    'page callback' => 'mymodule_callback',
    'access arguments' => array('my module permission')
  );

  return $items;
}

После того, как вы установили свой модуль / очистили кеш Drupal, перейдите на страницу администрирования разрешений и предоставьте ваше новое разрешение требуемой роли, и пользователи с этой ролью (теоретически) смогут получить к ней доступ.

Я говорю «в теории», потому что если ваш путь находится в admin/, роли также потребуется разрешение access administration pages для просмотра страницы, что может привести к потенциальным проблемам безопасности.Лучше всего было бы изменить путь куда-либо, кроме admin/, чтобы избежать необходимости иметь дело с этим.

...