Как перенаправить пользователя на определенную страницу после входа в систему, если он принадлежит к определенной роли?
У нас есть определенные пользователи в нашем списке членов, которые имеют роль "поставщик", прикрепленную к ним. Все такие члены должны быть перенаправлены на определенную страницу при входе в систему. Как этого можно достичь?
8 ответов
вы можете определить действия и триггеры в Drupal:
акции(admin / настройки / действия) - перенаправление на определенную страницу
триггер (admin/build/trigger/user) - после того, как пользователь вошел в систему
попробуйте это.
EDIT (см. комментарии):
создать небольшой модуль, чтобы проверить процесс входа пользователя, какую роль он имеет, а затем перенаправить, если необходимо. drupal_goto = > redirect-функция в drupal
hook_user =>триггеры для пользовательских операций
и для ролей пользователя:
GLOBAL $user;
$roles = $user->roles;
$vendor = in_array('vendor', $roles);
$vendor тогда имеет значение true / false, решит перенаправить или нет.
Если вы не знаете как это сделать, просто пост здесь и я напишу модуль для вас. Но это было бы хорошей практикой для написания будущих модулей drupa для вас, возможно. :)
существует несколько способов освежевать эту кошку... Это мой предпочтительный метод Drupal 7:
function hook_user_login(&$edit, $account) {
$edit['redirect'] = 'node/123';
}
Для Drupal 7
действие --> admin / config / system / actions-перенаправление на URL
затем включите модуль триггера
триггер --> /admin/structure/trigger / node
Если вы пытаетесь войти в перенаправление, просто следуйте этому (выберите вкладку пользователя на странице)
на --> администратор / структура / триггер / пользователь
затем Trigger: после входа пользователя в систему в
выбрать действие ->перенаправить на URL и назначить.
затем очистите кэш.
Она будет работать для вас!
есть 2 способа в DRUPAL 7
1) Использование действия и триггера смотрите этоhttp://drupal.org/node/298506
2)при использовании пользовательского модуля
function YOURMODULE_user_login(&$edit, $account) {
if (!isset($_POST['form_id']) || $_POST['form_id'] != 'user_pass_reset' || variable_get('login_destination_immediate_redirect', FALSE)) {
if(in_array('THE-ROLE-WANTED-TO-REDIRECT',$account->roles)):
drupal_goto('PATH');
else: drupal_goto('user/'.$account->uid);
endif;
}
}
можно использовать правила
событий: пользователь вошел в систему.
Условие: пользователь имеет роль
Действия: перенаправление страницы
есть модули, которые делают это (кроме триггера + действия), такие как LoginDestination:http://drupal.org/project/login_destination. Это сообщение форума Drupal имеет немного больше информации об этом, а также.
Это может быть достигнуто с помощью комбинации доступ к контенту и логин санная модули. Вы сможете ограничить страницы и предложить пользователю войти в систему для доступа к ним.