Какая связь между user_access и hook_perm в drupal? - PullRequest
3 голосов
/ 13 мая 2010

Кажется, что обе эти функции используются для проверки, имеет ли пользователь какое-либо преимущество.

И для меня эта разница не очевидна.

Может кто-нибудь уточнить?

Ответы [ 3 ]

8 голосов
/ 13 мая 2010

Если вы реализуете hook_perm, это определит права доступа для данного модуля следующим образом

/**
 * Implementation of hook_perm().
 */
function yourmodule_perm() {
  return array('can select', 'can update', 'can delete');
}

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

// @ some other module function
if (user_access('can delete')){
  // delete stuff
} else {
  drupal_access_denied();
}

Кроме того, hook_perm -определенные разрешения можно использовать при настройке меню вашего модуля hook_menu, выполнив:

// @hook_menu
$items['modulepath'] = array(
    'title'            => 'modulename',
    'page callback'    => 'module_function',
    'access callback'  => 'user_access',
    'access arguments' =>  array('can select'),
    'type'             => MENU_NORMAL_ITEM,
);

Не забудьте настроить учетную запись пользователя по адресу: admin / user / permissions

1 голос
/ 13 мая 2010

hook_perm позволяет добавлять пользовательские разрешения через модуль.Эти разрешения затем появляются при настройке пользовательских ролей.user_access касается определения, имеет ли пользователь доступ к определенным разрешениям.

1 голос
/ 13 мая 2010

hook_perm определяет возможные разрешения, затем вы можете перейти к admin / user / permissions, назначить разрешения для определенных ролей и затем использовать user_access, если пользователь получил разрешение (принадлежит роли, которая содержит разрешение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...