Допустимые аргументы доступа - PullRequest
2 голосов
/ 25 октября 2011

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

$items['admin/page'] = array(
   'access arguments' => array('access administration pages'),
  );

Ответы [ 3 ]

2 голосов
/ 29 октября 2011

На самом деле, вас интересуют значения аргументов доступа, где обратный вызов доступа равен «user_access» (значение по умолчанию); поскольку модуль может использовать другой обратный вызов доступа, значения аргументов доступа теоретически могут быть бесконечными.

Альтернативой вызову всех реализаций hook_permission() является использование кода, подобного следующему:

$permissions = array();
db_query("SELECT permission FROM {role_permission}");

foreach ($result as $row) {
  $permissions[$row->permission] = TRUE;
}

array_keys($permissions) предоставит вам список всех разрешений.

Я получил запрос от user_role_permissions () ; разница в том, что функция заинтересована в разрешениях, связанных с ролью, передаваемой в качестве аргумента.

2 голосов
/ 25 октября 2011

Invoke hook_permission() во всех модулях:

$permissions = module_invoke_all('permission');

Если я правильно помню, array_keys($permissions) выдаст вам список допустимых имен компьютеров с разрешениями.Ярлыки / описания / другие параметры для каждого разрешения находятся в каждом отдельном элементе массива.

0 голосов
/ 08 декабря 2016

1- Проверьте список действительных разрешений по адресу: / admin / people / permissions

Drupal 7, List of valid permissions

2- Укажите разрешение в хуке меню:

function webforms_advanced_router_menu() {

  $items['admin/config/mymodule'] = [
    'title' => 'MyModule',
    'page callback' => 'drupal_get_form',
    'access callback' => '_mymodule_admin_form',
    'access arguments' => array('administer site configuration'),
    'type' => MENU_CALLBACK
  ];

  return $items;
}
...