Drupal 7: ограничить доступ по пути - PullRequest
2 голосов
/ 10 октября 2011

Мне нужно ограничить различные разделы моего сайта. Я хотел бы сделать это, ограничив доступ к различным подпутям. Модуль Path Access на самом деле этого не делает.

Можете ли вы предложить какой-либо механизм, который позволил бы ограничить что-то вроде:

Члены-область / редакторы / * только для пользователей с ролью редактора.

Может быть, есть способ сделать это с помощью правил? Я пытался, но не могу найти.

Спасибо

Ответы [ 2 ]

7 голосов
/ 10 октября 2011

Для этого вам понадобится специальный модуль, это не так уж сложно. Это было бы суть этого:

// Implements hook_init()
function mymodule_init() {
  $restrictions = mymodule_get_restrictions();
  global $user;
  foreach ($restrictions as $path => $roles) {
    // See if the current path matches any of the patterns provided.
    if (drupal_match_path($_GET['q'], $path)) {
      // It matches, check the current user has any of the required roles
      $valid = FALSE;
      foreach ($roles as $role) {
        if (in_array($role, $user->roles)) {
          $valid = TRUE;
          break;
        }
      }

      if (!$valid) {
        drupal_access_denied();
      }
    }
  }
}

function mymodule_get_restrictions() {
  // Obviously this data could come from anywhere (database, config file, etc.)
  // This array will be keyed by path and contain an array of allowed roles for that path
  return array(
    'members-area/editors/*' => array('editor'),
    'another-path/*' => array('editor', 'other_role'),
  );
}
0 голосов
/ 02 октября 2012

Модуль Path Access предоставляет администраторам сайта дополнительный уровень контроля доступа ко всем страницам сайта Drupal.

http://drupal.org/project/path_access

...