Как дать программный доступ к модулю в drupal? - PullRequest
0 голосов
/ 14 октября 2011

на основании какого-то условия я хочу дать доступ к модулю.

if(abc == abc) {
  //give access to module xyz.
}

1 Ответ

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

Нет такой концепции, как предоставление доступа ко всему модулю в Drupal, только страницы, которые определит модуль. Обычно это делается путем реализации hook_menu() для определения страниц и затем предоставления либо access callback, либо access arguments.

Первый определяет функцию, которая будет вызываться для принятия решения о доступе:

function mymodule_menu() {
  $items['some/path'] = array(
    'title' => 'Some Title',
    'page callback' => 'mymodule_callback',
    'access callback' => 'mymodule_some_path_access'
  );

  return $items;
}

function mymodule_some_path_access() {
  global $user;

  if ($user->foo == 'bar') {
    // Access allowed, return TRUE
    return TRUE;
  }

  // Access not allowed, return FALSE
  return FALSE;
}

Второй определяет аргументы, которые будут переданы функции user_access. Обычно это зависит от разрешений, которые предоставляет ваш модуль:

function mymodule_menu() {
  $items['some/path'] = array(
    'title' => 'Some Title',
    'page callback' => 'mymodule_callback',
    'access arguments' => array('access mymodule')
  );

  return $items;
}

function mymodule_perm() {
  return array(
    'access mymodule'
  );
}

Во втором примере пользователю будет отказано в доступе, если у него нет разрешения 'access mymodule' (как определено в области прав доступа Drupal).

Надеюсь, это поможет

...