Как перенаправить пользователя на определенную страницу после входа в систему, если он принадлежит определенной роли? - PullRequest
7 голосов
/ 07 августа 2010

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

Ответы [ 9 ]

11 голосов
/ 23 ноября 2012

Существует более одного способа снятия кожи с этой кошки ... Это мой любимый метод Drupal 7:

function hook_user_login(&$edit, $account) {
  $edit['redirect'] = 'node/123';
}
6 голосов
/ 10 июня 2013

Для Drupal 7

Действие -> admin / config / system / actions - Перенаправить на URL

, затем включить модуль триггера

Триггер -> / admin / структура / триггер / узел

, если вы пытаетесь перенаправить вход в систему, просто следуйте этому (выберите вкладку пользователя на странице)

перейдите к-> администратор / структура / триггер / пользователь

затем Триггер: после входа пользователя в систему

выберите действие -> Перенаправить на URL и назначить.

Затем очистить кеш.

Это будет работать для вас!

4 голосов
/ 24 мая 2012

Вы можете использовать Правила

События: пользователь вошел в систему.
Условие: у пользователя есть роль
Действия: перенаправление страницы

4 голосов
/ 02 марта 2012

Есть 2 способа в ДРУПАЛЕ 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; 

} 

}
4 голосов
/ 07 августа 2010

Вы можете определить действия и триггеры в Drupal:

Действие ( admin / settings / actions ) - Перенаправление на определенную страницу

Триггер ( admin / build / trigger / user ) - После входа пользователя в систему

Попробуйте это.

РЕДАКТИРОВАТЬ (см. Комментарии):

Создайте небольшой модуль для проверки процесса входа пользователя в систему, какую роль он имеет, и затем перенаправьте, если необходимо. drupal_goto => функция перенаправления в drupal

hook_user => запускает операции пользователя

И для ролей пользователя:

GLOBAL $user;
$roles = $user->roles;
$vendor = in_array('vendor', $roles);

$ vendor затем содержит значение true / false, решит, перенаправить или нет.

Если вы не знаете, как это сделать, просто опубликуйте здесь, и я напишу модуль для вас.Но, возможно, это будет хорошей практикой для написания будущих модулей drupa.:)

2 голосов
/ 07 сентября 2012

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

if($op =='login') drupal_goto("your path");
2 голосов
/ 07 августа 2010

Есть модули, которые делают это (кроме Trigger + Actions), такие как LoginDestination: http://drupal.org/project/login_destination. Это сообщение на форуме Drupal также содержит немного больше информации об этом.

1 голос
/ 20 июня 2019

Сначала задайте условия в предварительной обработке формы (например, я хочу перенаправить только пользователей, которые вошли в систему, используя форму на странице узла)

function YOURMODULE_form_user_login_alter(&$form, &$form_state, $form_id)
{
    $pathArguments = explode('/', current_path());
    if (count($pathArguments) == 2 && $pathArguments[0] === 'node' && is_numeric($pathArguments[1])) {
        $form_state['nodepath'] = current_path();
    }

}

чем определить перенаправление:

function YOURMODULE_user_login(&$edit, $account)
{
    if (isset($edit['nodepath']) && !empty($edit['nodepath'])) {
        drupal_goto($edit['nodepath']);
    }
}
1 голос
/ 23 июня 2016

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

...