Здравствуйте. Есть два сайта на друпал. Сайты созданы с помощью мультисайтинга. Есть страница на одном сайте site.com/about. На этой странице есть ссылка "вход", которая ведёт на id.site.com/login. Подскажите, пожалуйста, как сделать так, чтобы после авторизации на id.site.com/login, пользователя переадресововало обратно на странице site.com/about?
Мультисайтинг и переадресация, после авторизации
Главные вкладки
Лучший ответ
Без доп. модулей никак. Есть вот такой https://www.drupal.org/project/rules_url_argument . Сам не пользовался, но по описанию должен подойти.
Другой вариант - через кастомный модуль в хуке hook_user_login делать редирект куда надо.
Или, как предлагали выше, альтерить форму, добавить свой сабмит, и в нем редиректить, например через установку $form_state['redirect']
Дополню. Сейчас посмотрел, альтерить форму - это уже лишнее усложнение, т.к. hook_user_login вызывается внутри сабмита формы логина и первым аргументом по сути идет $form_state.
Комментарии
Попробуйте самый простой вариант: destination в виде get параметра
А
destination
умеет в кроссдоменные редиректы?Мне кажется, всё равно придётся альтерить форму логина.
Пробовал. Не умеет
Может через Rules? Событие "Пользователь авторизовался". В ссылку добавляем какой-нибудь параметр, например //id.site.com/login?from=site.com. Условие в правилах - url текущей страницы равно
login?from=site.com
. Действие - переадрессация.А как сделать это, если адрес site.com/about динамичный?
Без доп. модулей никак. Есть вот такой https://www.drupal.org/project/rules_url_argument . Сам не пользовался, но по описанию должен подойти.
Другой вариант - через кастомный модуль в хуке hook_user_login делать редирект куда надо.
Или, как предлагали выше, альтерить форму, добавить свой сабмит, и в нем редиректить, например через установку $form_state['redirect']
Дополню. Сейчас посмотрел, альтерить форму - это уже лишнее усложнение, т.к. hook_user_login вызывается внутри сабмита формы логина и первым аргументом по сути идет $form_state.
Что значит - динамический? Это обычный друпаловский синоним? Я что-то не пойму проблему. Поясните.
Дело в том, что мне с сайта id.site.com перенаправить именно на ту страницу откуда пользователь и перешёл на страницу авторизации. Это может быть любая страница на site.com. Смог объяснить?) да, это обычный друпаловский синоним
Понятно.
Тогда, если уж всё равно альтерить форму (либо писать хук), то возможно лучше читать адрес-источник из
$_SERVER['HTTP_REFERER']
, чем передавать через ссылки.При передаче источника через урл есть одно небольшое преимущество, при ошибочном вводе пароля он не потеряется, а HTTP_REFERER потеряется.
И еще одно новшество от браузеров нужно учесть, если опираться на реферер, нужно позаботиться об установке заголовка ответа Referrer-Policy, потому как Chrome начиная с версии 85 изменяет политику передачи реферера по-умолчанию и при cross-origin переходах будет передает только домен, но не полный урл источника https://developers.google.com/web/updates/2020/07/referrer-policy-new-ch... .
Понятно, спасибо.
Спасибо в ем за помощь. Решил)