Как перенаправить пользователя на определенную страницу после входа в систему, если он принадлежит к определенной роли?

У нас есть определенные пользователи в нашем списке членов, которые имеют роль "поставщик", прикрепленную к ним. Все такие члены должны быть перенаправлены на определенную страницу при входе в систему. Как этого можно достичь?

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 имеет немного больше информации об этом, а также.


следующее условие для hook_user

if($op =='login') drupal_goto("your path");

Это может быть достигнуто с помощью комбинации доступ к контенту и логин санная модули. Вы сможете ограничить страницы и предложить пользователю войти в систему для доступа к ним.