Как вставить авторизацию(регистрацию) в модуль?

Главные вкладки

Аватар пользователя alergi@drupal.org alergi@drupal.org 6 января 2008 в 12:25

Пишу модуль для друпала, что-то типа корзины в интернет-магазинах.

Суть в том, что корзина должна быть доступна для всех пользователей, в т.ч. и для не зарегистрированных. Т.е. юзер ходит по сайту, добавляет что-то в корзину (данные хранятся в сессии). Затем когда он закончил, нажимает "Заказ", ему надо показать стандартную страницу авторизации/регистрации. После того как он вошел, его надо опять вернуть на страницу модуля, где данные из сессии запишутся в БД и прикрепятся к его аккаунту, ну и вывести соответствующее сообщение.

Надеюсь я понятно описал проблему. Думаю я не первый кто с этим сталкивается и должна быть какая-то готовая функция (решение), но поискам ничего похожего не находится Sad

Комментарии

Аватар пользователя alergi@drupal.org alergi@drupal.org 12 января 2008 в 13:50

Слишком навароченно... Проще написать с нуля, чем подогнать этот модуль под требования.

Нашел пока только «destination=page». Но проблема в том, что если мы отправляем пользователя на регистрацию («user/register?destination=page»), а у него уже есть аккаунт и он нажимает на ссылку «Войти», то этот destination из урла пропадает, и после авторизации его как обычно редиректит в свой профиль.

Ещё нашел: функция drupal_goto не парсит урл на наличие destination, а просто проверяет наличие $_REQUEST['destination'], т.е. можно обмануть функцию - поставив соответствующую cookie. Но у этого решения тоже проблемы: мало того, что оно работает только у пользователей, у которых включены куки, так ещё надо не забыть удалить эту cookie, иначе пользователя будет редиректить после заполнения любой формы.

P.S. смотрю и в стандартном модуле комментариев эта проблема не решена. Если нажать «зарегистрироваться», чтобы отправть комментарий, а затем нажать «Вход», то редирект будет в профиль, а не в комментарий. Если и разработчики друпала не смогли решить это проблему, то похоже решения точно нет, видно придется добавлять код прямо в ядро, чтобы добится нужного эффекта.

P.P.S. как же глупо устроен drupal.org... почему нельзя было всю документацию разместить в одном месте!? А то понаделали разделов: api, handbooks, tutorials — что-либо найти в этой куче проблема...