ショップの顧客や管理画面のユーザーがログインした時に何かプログラムを実行したいというケースがあります。例えば情報をデータベースに記録するなどですね。

通常のPHPプログラムであればユーザーの情報をセッションに保存して、その次の行で何か実行すれば良いだけなんですが、フレームワークは一味違います。

 

EC-CUBE3ではSymfony2を基盤フレームワークとしていますので、ユーザー認証周りはSymfonyの流儀に従います。

まずは管理画面にログインした時のことを書きますが、ショップ側のログインもほぼ同様です。

 

/src/Eccube/Application.php

まず、ログイン周りを管理しているinitSecurityメソッドをみます。

 

上はログインフォームのURLやログイン後のリダイレクトを設定している既存のコードです。

この次に下記のコードを書き足します。

管理画面でのログインに対して、AuthencationSuccessHandlerを登録しています。

これでユーザーが管理画面でログインをすると\Eccube\Security\DefaultAuthenticationSuccessHandlerクラスのonAuthenticationSuccessメソッドが自動的に呼ばれるようになります。

\Eccube\Security\DefaultAuthenticationSuccessHandlerは以下のような内容でクラスを新規作成しておきます。

/src/Eccube/Security/DefaultAuthenticationSuccessHandler.php

 

あとはログイン後に実行したいプログラムをonAuthenticationSuccessメソッド内に書いてやるだけです。

上のサンプルだとログファイルにログインユーザーのIDが記録されます。

なお、ほぼ同様の方法で、ログインに失敗した時の記録やショップ会員のログイン成功/失敗記録も可能です

かなり高難易度のカスタマイズになりますが、EC-CUBE3をご利用の方はぜひお試しください。

 

関連するカスタマイズ

ロゴブロックに入っているh1タグを動的に変更する方法... EC-CUBE3.0の標準テンプレートでは、ロゴエリアはブロックとして配置されており、コントローラと紐付けられていないため、内容を動的に変更するのが若干手間となっています。 今回はh1タグをここに配置したまま商品名やカテゴリ名を動的に入れられるようにする方法をご紹介します。 考え方として...
リファラーによってアクセスを制限する方法... 今回はEC-CUBE3でどのようにリファラーを取得するかというお話がメインです。 各ページのコントローラでは、リファラーを簡単に取得することができます。 コントローラーのアクションメソッドに次のような形で$request変数が渡されてきます。   この$reques...
商品価格を税抜表示に変更する方法 商品一覧ページ・商品詳細ページの表示価格を税抜き価格・税別表記にするには、Product/detail.twigとProduct/list.twigに記載されている getPrice02IncTaxMin、getPrice02IncTaxMax、getPrice01IncTaxMin、getPri...
自動送信メールを複数の宛先に送る方法... EC-CUBE3ではメール送信はMailServiceというサービスクラスが担当しています。 メールの送信先は管理画面から変更できますが、複数の宛先へ送信したいなどの要望がある場合は、このMailServiceファイルを編集するかプラグインで処理を挟む必要があります。 実際の送信箇所のコ...

この技術に関するお問い合わせ