Как мне предоставить доступ к модулю программно в drupal?

#php #drupal #drupal-6 #module #drupal-modules

#php #drupal #drupal-6 #модуль #drupal-модули

Вопрос:

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

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

Комментарии:

1. Не могли бы вы подробнее рассказать о том, чего вы пытаетесь достичь. Ваш вопрос и код очень расплывчаты.

Ответ №1:

В 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).

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