@anikitin35

Как сделать редирект пользователя на первоначальную страницу после аутентификации в Drupal 7?

Пользователь находится на странице. Далее он нажимает на авторизацию. После успешной авторизации он должен попасть не в профиль, а на первоначальную страницу, с которой он вошел в авторизацию.
  • Вопрос задан
  • 3768 просмотров
Решения вопроса 2
@Jiffa
на странице авторизации берем реферер из массива $_SERVER и пишем в сессию, делаем хук на submit формы login_form в котором делаем редирект на страницу, с которой пользователь зашел на авторизацию

реализуется это так:
в page.tpl.php
if ($_SERVER['REQUEST_URI'] == '/user') {
    session_start();
   $_SESSION['prev_path'] = $_SERVER['HTTP_REFERER'];
}


в файле своего модуля:

function modulename_form_alter(&$form, &$form_state, $form_id){
  if ($form_id == 'user_login'){
    $form['#submit'][] = 'modulename_login_submit';
  }
}

function modulename_login_submit($form, &$form_state) {
  drupal_goto($_SESSION['prev_path']);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@anikitin35 Автор вопроса
Формирую такой вот формат ссылки для логина. С помощью токена подставляется адрес страницы, с которой идет авторизация.
href="user/login?destination=[site:current-page:path]"


В Rules создал правило редиректа пользователя после входа. В URL правила вставил такой вот php-код. Нужно включить php-filter.
<?php
 
  $path = $_SERVER['HTTP_REFERER'];
  if (isset($_GET['current'])) {            //if (isset($_GET['destination'])) {
    $path = $_GET['current'];             // $path = $_GET['destination'];
  }                                               // }
  echo $path;
 
?>


Ниже стоит галочка "Force redirect" — её оставить.

Редирект работает. Проверил.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы