user_access ($ string, $ account = NULL)
$ string: проверяется разрешение, такое как «администрирование узлов».
Как я могу узнать список доступных значений $ string для user_access()
функции?
Пока каждый модуль может определять свои собственные разрешения, нет «строгого» списка этих строк. Вам нужно будет «построить» его, если вам действительно нужен такой список программно.
Вы можете запустить этот скрипт на странице / devel / php. (Конечно, вам нужен модуль Devel .)
// Render role/permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
print_r($module);
// Drupal 6
// if ($permissions = module_invoke($module, 'perm')) {
// print_r($permissions);
// }
// Drupal 7
if ($permissions = module_invoke($module, 'permission')) {
print_r($permissions);
}
}
Как сказал @Berdir, самый простой способ узнать, какие разрешения доступны, - это перейти к разрешениям admin / people / permissions в Drupal 7.
Проблема, с которой я продолжал сталкиваться, заключается в том, что я никогда не мог понять, какую строку мне нужно было предоставить в качестве «аргумента доступа», чтобы фактически использовать разрешение. Итак, вот как вы можете найти имя строки для разрешений, которые вы хотите использовать (в этом примере используется Google Chrome.)
Первый шаг. Перейдите к admin / people / permissions, найдите разрешение, которое вы хотели бы использовать, и щелкните правой кнопкой мыши по флажку справа от разрешения, которое вы хотите использовать. Выберите «Проверить элемент» или просто посмотрите на источник.
Затем найдите значение флажка и запишите это значение. (В этом случае строка «создать содержимое купона»)
Это строка, которую вы должны предоставить в качестве аргумента доступа в hook_menu ()
Пример кода: (не релевантные элементы удалены, не забудьте заголовок, обратный вызов и т. Д. В hook_menu ())
function fsrsys_menu() {
$items = array();
$items['my-custom-url'] = array(
'access callback' => 'user_access',
'access arguments' => array('create coupon content'),
);
return $items;
}
Вот версия ответа Haza для D7, модифицированная для использования DSM вместо print_r и для исключения модулей, которые не реализуют hook_permission:
// Render permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
if ($permissions = module_invoke($module, 'permission')) {
// List only the modules that have permissions.
dsm($module);
dsm($permissions);
}
}
Вы можете использовать user_permission_get_modules()
функцию, которая возвращает массив всех определенных разрешений и их модулей.
Определите модули, которым принадлежат разрешения.
Возвращаемое значение
Ассоциативный массив в формате $ Права => $ Модуль.
array_keys()
вы, очевидно, получите только запрошенную информацию. Вы можете также использовать результатuser_role_grant_permissions
, например , с целью предоставление роли администратора всех разрешений:user_role_grant_permissions(variable_get("user_admin_role"), array_keys(user_permission_get_modules()));
Самый простой способ - проверить страницу разрешений (D7: admin / people / permissions, D6: admin / user / permissions). Обратите внимание, что вы напрямую используете отображаемую строку в Drupal 6, для 7 вам нужно взглянуть на имя / значение флажка. Это связано с тем, что разрешения теперь имеют переведенный заголовок и описание в Drupal 7.
Поэтому, если вы хотите указать имя для разрешения «Просмотр опубликованного контента» в Drupal 7, значение «access content» - это имя вашего разрешения.
Если вы знаете, от какого модуля исходит разрешение, вы также можете проверить соответствующую реализацию hook_perm () (D6) / hook_pemission () (D7) этого модуля.
Во многих случаях вы хотите определить свои собственные разрешения и использовать их, вы можете сделать это с помощью описанных выше хуков.
источник
Использование модуля Devel
После установки и включения модуля Devel перейдите к
admin/config/development/devel
. Существует настройка под названием «Отображать имена компьютеров для разрешений и модулей». Будьте уверены, что проверено.Теперь на странице разрешений
people/permissions
наведите указатель мыши на название разрешения, которое вы запрашиваете. Это может задержать секунду или две, но тогда появится строковое значение.источник
Вот простое изменение формы, которое добавит ключ доступа к имени на странице разрешений. Это должно облегчить поиск. Вам нужно будет добавить его в пользовательский модуль и заменить «mymodule» на имя этого модуля.
источник
Я создал этот фрагмент JavaScript, который помогает мне в этом. Я тестировал его в Drupal 7 только на тему Shiny .
Он в основном выводит имя машины, взятое из первого флажка этого имени, в первую ячейку под меткой. Скрипт опирается на jQuery, что не должно быть проблемой в Drupal 7.
Обычно я вставляю его в консоль Developer Tools и запускаю оттуда. Я мог бы создать букмарклет для этого в будущем.
источник
источник
Это простой модуль для упрощения: Access Arguments List
С уважением
источник
просто загляните в какой-нибудь модуль, вы увидите права доступа к машине в / admin / people / permissions
С уважением
источник