Ограничить пункт меню только для определенного элемента, доступного после входа в систему, и, возможно, для роли


Вот меню, которое у меня есть.

  $items['start'] = array(
    'title' => 'Take A Test',
    'page callback' => 'qe_start',
    'access callback' => TRUE,
    'expanded' => TRUE,
  );  

return $items;

Что должно быть передано в этом, чтобы сделать его доступным для роли/зарегистрированного пользователя?

'access arguments'    => array('content'),

И как я могу сделать это для callback_menu?

Author: esafwan, 2012-02-28

2 answers

Если вы на самом деле просто хотите проверить, вошел ли пользователь в систему, и не хотите настраивать разрешения, вы можете установить обратный вызов доступа на "user_is_logged_in":

$items['start'] = array(
  'title' => 'Take A Test',
  'page callback' => 'qe_start',
  'access callback' => 'user_is_logged_in',
  'expanded' => TRUE,
);  
 3
Author: dysrama, 2012-02-29 11:02:30

Обычно вы определяете разрешение для своего модуля/страницы с помощью hook_permission() а затем назначьте это разрешение определенной роли/набору ролей в разделе администратора.

Затем вы можете использовать это разрешение в своем меню обратного вызова, зная, что только разрешенные вами роли могут получить доступ к странице:

function qe_permission() {
  return array(
    'take a test' => array(
      'title' => t('Take a test')
    ),
  );
}

function qe_menu() {
  $items['start'] = array(        
    'title' => 'Take A Test',
    'page callback' => 'qe_start',
    'access arguments' => array('take a test'),
    'type' => MENU_CALLBACK,
    'expanded' => TRUE,
  );

  return $items;
}

Страница администратора разрешений находится по адресу http://mysite.com/admin/people/permissions на всякий случай, если вы его еще не видели.

 1
Author: Clive, 2012-02-28 21:06:19