Тема: Отвязка корзины после логаута пользователя

После выхода клиента из системы, его корзина сохраняется и продолжает висеть в системе. Дальнейшие изменения корзины под гостем влияют и на корзину клиента.

Пытаюсь сделать в кастомном модуле так, чтобы при логауте отвязывалась корзина. Привязался на userLogout, но вот дальнейшие действия сформулировать не могу - обнуление корзины (destroy) не помогает, чистка кэша тоже.

Подскажите, как быть?

Повысить оценку Понизить оценку

2

Re: Отвязка корзины после логаута пользователя

Вы можете посмотреть, что происходит в базе в таблице cart и потом сформулировать и реализовать, что вы желаете видеть при логауте. В вашем распоряжении есть поля: session_id, user_id


Стандартная логика ReadyScript по корзине такая:

1. Корзина всегда привязана к guest_id (оно пишется в поле session_id) - это по сути долгосрочный идентификатор браузера клиента (в отличие от сессии живет гораздо дольше).
2. Если клиент авторизуется, с пустой корзиной, то на его guest_id переносятся товары, которые были привязаны к user_id.
3. Если клиент авторизуется с непустой корзиной, то его товары привязываются к user_id, а предыдущие товары для этого user_id удаляются, т.е. происходит замещение корзины авторизованного пользователя.

Пример работы 1:
Клиент собрал, будучи авторизованным, корзину на телефоне. Затем включил компьютер, открыл сайт (корзина пустая), авторизовался, все его товары перешли на компьютер, с телефона пропали.

Пример работы 2:
Клиент собрал, будучи авторизованным, корзину на телефоне. Затем включил компьютер, открыл сайт, будучи неавторизованным собрал какую-то другую корзину на ПК, затем авторизовался.
Система поняла, что клиент собрал новую корзину и уничтожила при авторизации ту, что была связана с его user_id.
И привязала новые товары к его user_id. На телефоне клиент увидит товары с ПК после авторизации на ПК.

----------------

При логауте сейчас ничего не происходит.

Повысить оценку Понизить оценку

3

Re: Отвязка корзины после логаута пользователя

admin пишет:

При логауте сейчас ничего не происходит.

Вот, если честно, у RS этот момент никогда не отслеживал и клиенты никогда о нём сообщали.
Но, это же в корне неверно. Содержимое корзины должно быть привязано к юзеру. А у неавторизованных - к кукам.
Так же у всех. Удивляет.

Re: Отвязка корзины после логаута пользователя

Система поняла, что клиент собрал новую корзину и уничтожила при авторизации ту, что была связана с его user_id.

По-хорошему, сделать бы выбор, удалить или объединять. Так как это не всегда новая корзина. Бывает, что набрали корзину на телефоне, сели за комп (домашний например), где уже кто то положил хоть один товар и все, при авторизации все теряется.
Лучше там будет больше. Мне жалуются как раз на удаление корзин, а не на лишние товары в ней.

5

Re: Отвязка корзины после логаута пользователя

Когда продумывались наши кейсы учитывалась механика имеющихся у нас видов оформления заказа.
Все очень сильно взаимосвязано.

--

Клиент часто доходит до оформления заказа (что означает, что корзина у него не пустая) неавторизованным и только в процессе оформления заказа авторизуется. Это означает, что авторизация ни в коем случае не должна ничего добавлять в корзину.

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

--

Но при пустой корзине клиент не может перейти к оформлению, а значит авторизоваться он может только через кнопку на сайте, а значит в этот момент ему можно загрузить корзину, которую он собирал будучи авторизованным на другом устройстве.

Повысить оценку Понизить оценку

6 Отредактировано Ярослав (18.03.2024 17:40:37)

Re: Отвязка корзины после логаута пользователя

admin пишет:

Но при пустой корзине клиент не может перейти к оформлению, а значит авторизоваться он может только через кнопку на сайте, а значит в этот момент ему можно загрузить корзину, которую он собирал будучи авторизованным на другом устройстве.

Когда у человека 1-2 товара, то да, набрать просто корзину. А вот при оптовых заказах у моих клиентов наблюдаю обратный процесс , когда готовы порвать из за потерянной корзины в 40 позиций, которую отбирали несколько дней.

Так что есть 2 вариантва.

7

Re: Отвязка корзины после логаута пользователя

Ярослав, интересен ваш кейс.
Опишите подробнее, как все происходит?
Какой точный сценарий клиента, почему он работает на разных устройствах, в какой последовательности он авторизуется?

Теоретически возможен к реализации еще один сценарий - это полная изоляция устройств, без какой-либо перепривязки товаров после авторизации. Тогда все товары на всех устройствах будут оставаться в том виде, в котором они там были собраны.

Повысить оценку Понизить оценку

Re: Отвязка корзины после логаута пользователя

Опишите подробнее, как все происходит?
Какой точный сценарий клиента, почему он работает на разных устройствах, в какой последовательности он авторизуется?

У меня на техподдержке в основном оптовые магазины. Клиенты данных магазинов собирают корзину до недели. Размер корзины - десятки позиций. У некоторых пришлось сделать лимит, так как набирали до 100 и выше, что приводило к проблемам.

У пользователя может быть компьютер дома и в офисе, а то и несколько. Бывает, что под одним аккаунтом сидят несколько менеджеров клиента.
Пользователь может случайно начать добавлять в корзину в другом браузере, устройстве.
Затем заходит и теряет всю корзину, собранную до этого. Было 40 позиций, отобранные с учетом скидок, стала одна.


Сейчас я проверил на сайте и в приложении Мвидео корзину. И там товары, собранные без авторизации, объединяются с теми, что были ранее в корзине пользователя.