複数店舗の複数データベースの問題
複数の KonaKart デプロイメントと複数のデータベースがあるとします。
コナカートのドキュメントから:
「KonaKart はマルチストア機能を提供し、単一の KonaKart デプロイメントと単一のデータベースからストアを実行できるようにします。」
後でそれはまた言います:
「複数店舗複数データベース モードでは、共有顧客はサポートされていないため、作成されたユーザーは自分の店舗へのログインのみが許可されます。」
ポータル ユーザーがすべてのストアにアクセスできるようにし、顧客の詳細をストア間で同期させたい場合は、複数のデータベース インストールをインストールすることはお勧めしません。ただし、さまざまなユーザーのセットにさまざまなストアを表示する場合は、問題ありません。
Liferay と KonaKart ポートレットの統合
Liferay は PortletRequestImpl getRemoteUser()を実装しているため、ポータルは、 request.getRemoteUser()を使用してポートレットでアクセスできる、ポータルと KonaKart ポートレットの間でユーザー ID を渡す必要があります。
このスレッドによると、ポートレット内から Liferay のUserServiceUtilから他の詳細 (ユーザーの電子メールを含む) を取得することもできるはずです。
KonaKart はApache Portal の Struts Bridgeを使用しており、これは、アプリケーションの Java 部分にポートレット固有のコードがほとんどないことを意味します (ほとんどの場合、これは典型的な Struts 1.2.7 アプリのように見えます)。通常どおりにリクエストとセッションを使用し、ブリッジに詳細を任せることができるはずです。とはいえ、Struts タグの Struts Bridge バージョン (ポータル対応) を使用して、JSP がポータル コンテナで確実に機能するように特別な注意を払う必要があります。Struts ブリッジを使用すると、同じアプリケーションを「スタンドアロン」で実行できる (つまり、ポータル コンテナの外部から直接アクセスできる) ことも意味します。
Liferay と KonaKart の間の共通の識別子は、顧客の電子メール アドレスになるようです。
KonaKart のソース コードを見ると、ほとんどの内部処理で顧客 ID (int) が使用されており、顧客 ID は、顧客の電子メールとパスワードを引数として受け取るログイン メソッドを通じて取得されます。すべてのユーザーのパスワードを、ポートレットだけが知っている秘密の値に設定することもできますが、これは、ポータル経由でのみ KonaKart にアクセスできることを意味します (顧客はスタンドアロン モードのパスワードを知らないため)。
KonaKart-5.5.0.2 のソース コードを少し見てみました。興味深いコードのほとんどは、次の 2 つの場所のいずれかにあるようです。
リクエストからLiferayユーザーの詳細を取得し、電子メールアドレスを使用して顧客IDを取得するには 、 BaseActionのloggedInメソッドをカスタマイズする必要があると思います。
また、一定量の顧客登録をプログラムで実行できるようにすることもできます。一部の詳細は顧客が設定する必要があります。たとえば、Liferay は通常、ポータル ユーザーの住所の詳細を保持していません。「 SubmitAction」という接尾辞が付いたクラスは、フォームの送信後に通常発生する Struts アクションであるため、調べるのに最適な場所です。調査する価値のあるクラスには次のものがあります。
com.konakart.actions.BaseAction : 具体的には、ログインしているかどうかを確認する (そして顧客 ID を返す) メソッド「loggedIn」です。
com.konakart.actions.EditCustomerSubmitAction : 顧客編集ページの送信後に呼び出され、顧客情報の編集方法を示します。
com.konakart.actions.CustomerRegistrationSubmitAction : 顧客登録ページの送信後に呼び出され、顧客情報の登録方法を示します。
com.konakart.actions.ChangePasswordSubmitAction
com.konakart.apiexamples.GetCustomer : KonaKart の顧客の詳細を取得する (メール アドレスがある場合)
com.konakart.apiexamples.RegisterCustomer : 顧客登録の別の例
これが役立つことを願っています