Проблемы с несколькими базами данных из нескольких магазинов
Вы говорите, что у вас есть несколько развертываний KonaKart и несколько баз данных.
Из документации KonaKart:
«KonaKart предоставляет функциональность нескольких магазинов, чтобы вы могли запускать свои магазины из одного развертывания KonaKart и единой базы данных».
позже в нем также говорится:
"В режиме нескольких магазинов нескольких баз данных поддержка общих клиентов не поддерживается, поэтому созданным пользователям разрешается входить только в свои собственные магазины."
Если вы хотите, чтобы пользователи портала быливозможность доступа ко всем вашим магазинам и сведениям о клиентах, синхронизированным между магазинами, поэтому не рекомендуется устанавливать несколько баз данных.Однако, если вы хотите, чтобы разные группы пользователей видели разные магазины, у вас все будет в порядке.
Интеграция Liferay с портлетом KonaKart
Liferay реализует PortletRequestImpl getRemoteUser () , поэтому портал должен передавать идентификатор пользователя между порталом и портлетом KonaKart, который будет доступен в портлете с использованием request.getRemoteUser () .
Согласно эта ветка вы также сможете получать другие сведения (включая электронная почта пользователя ) из UserServiceUtil Liferay из своего портлета.
KonaKartиспользует Apache Portal Struts Bridge , и это означает, что в коде, специфичном для портлетов, в Java-части приложения практически ничего нет (по большей части это будет типичное приложение Struts 1.2.7),Вы должны иметь возможность использовать запросы и сеансы, как обычно, и позволить мосту беспокоиться о деталях.При этом особое внимание следует уделить тому, чтобы JSP работали в контейнере портала, используя версию тегов Struts Bridge (которые поддерживаются порталом).Использование моста Struts также означает, что одно и то же приложение может быть запущено «автономно» (то есть к нему можно получить доступ непосредственно за пределами контейнера портала).
Похоже, что общий идентификатор между Liferay и KonaKart станет клиентомадрес электронной почты.
При просмотре исходного кода KonaKart большая часть внутренней обработки использует идентификатор клиента (int), а идентификатор клиента получается с помощью метода входа в систему, который принимает электронную почту клиента и пароль в качестве аргументов.,Вы можете установить пароль для всех пользователей в качестве секретного значения, известного только портлету, хотя это будет означать, что вы сможете получить доступ к KonaKart только через портал (поскольку клиент не будет знать их пароль для автономного режима).
Я немного посмотрел на исходный код KonaKart-5.5.0.2.Похоже, что большинство интересного кода находится в одном из двух мест:
Я думаю, вам, вероятно, придется настроить loggedIn метод в BaseAction , чтобы получить ваши данные пользователя Liferay из запроса и использовать адрес электронной почты для получения идентификатора клиента.
Вы также можете захотеть выполнить определенное количество регистраций клиентов программным путем.Некоторые детали должны быть установлены клиентом - например, Liferay обычно не хранит адресные данные пользователей портала.Некоторые из лучших мест для поиска - это классы с суффиксом « SubmitAction », поскольку это действия Struts, которые обычно выполняются после отправки формы, и некоторые классы, которые стоит изучить, включают:
com.konakart.actions.BaseAction : в частности, метод "loggedIn", который проверяет, вошли ли мы в систему (и возвращает ли идентификатор клиента).
com.konakart.actions.EditCustomerSubmitAction : вызывается после отправки страницы редактирования клиента и показывает, как редактировать информацию о клиенте.
com.konakart.actions.CustomerRegistrationSubmitAction : вызывается после отправки страницы регистрации клиента и показывает, как зарегистрировать информацию о клиенте.
com.konakart.actions.ChangePasswordSubmitAction
com.konakart.apiexamples.GetCustomer : получить данные клиента KonaKart, если у вас есть их адрес электронной почты
com.konakart.apiexamples.RegisterCustomer : еще один пример регистрации клиента
Надеюсь, это поможет