Drupal: почему пользовательский администратор не может получить доступ к страницам моего модуля? - PullRequest
0 голосов
/ 29 декабря 2010

Я работаю над модулем drupal 6.x, который состоит из нескольких страниц, как определено на странице .module.Проблема в том, что когда я захожу на эти страницы как администратор, мне отказывают в доступе.Я думал, что администратор (пользователь 1) может получить доступ к чему угодно?Вот код для некоторых страниц:

function foobar_menu()
{
 $items['admin/foobar'] = array(
   'title' => 'administer foobar',
   'page callback' => 'foobarpage',
 );

 $items['admin/foobar/baz'] = array(
   'title' => 'Do baz',
   'page callback' => 'drupal_get_form',
   'page arguments' =>array('foobarpage'),
 );

Итак, как мне убедиться, что только администратор может видеть эти страницы, а остальные получают ошибку «страница не существует»?

РЕДАКТИРОВАТЬ: я нашел решение здесь .

Ответы [ 3 ]

7 голосов
/ 29 декабря 2010

Вам необходимо определить access arguments для каждого отдельного пункта меню.

См. документацию на drupal.org по этому вопросу.

Например, вы hook_menu можете что-то посмотретькак это:

$items['admin/foobar'] = array(
    'title' => 'administer foobar',
    'page callback' => 'foobarpage',
    'access arguments' => array('administer site configuration'),
);
1 голос
/ 29 декабря 2010

wiifm ответ правильный, но другой альтернативой (если вы не хотите использовать «администрирование конфигурации сайта») является создание функции обратного вызова с настраиваемым доступом, которая проверяет либо uid == 1, либо создание настраиваемого priv.

Я не знаю, что лучше всего подходит для вашего случая, но есть вероятность, что вы захотите поступить так, как предлагает wiifm.

0 голосов
/ 29 декабря 2010

Когда вы говорите «администратор», вы имеете в виду первого пользователя, которого вы создали, или определенного пользователя, которому вы предоставили все привилегии. В любом случае, как сказал выше wiifm, даже для администратора, вы должны добавить запись «аргумент доступа» в свои пункты меню, как только вы это сделаете, и если вы сделаете то, что говорит wiifm, вы сможете получить доступ к пункту меню с помощью admin а не с любым другим пользователем (если вы не дадите это разрешение другим пользователям, что маловероятно).

...