【開発コミュニティの人気Tipsをご紹介②】EC-CUBEで会員制サイトを作ってみよう
こんにちは、EC-CUBEエバンジェリスト 足立智広です。
前回の記事でもご紹介しましたように、EC-CUBEでは、ご利用者同士が問題解決方法を投稿・共有できる「開発コミュニティ」を開設し、多くの方にお使いいただいています。
この連載では、開発コミュニティで話題となっているカスタマイズをピックアップして、ご紹介していきます。
会員制サイトを作るカスタマイズ!
本記事では、EC-CUBEの商品一覧や商品詳細といった、お買い物をしていただくための画面を「ログイン必須」にするカスタマイズをご紹介します。
トップページは会員以外のゲストの方でも見ることができますが、実際に買い物をするための商品一覧や商品詳細に進もうとすると、ログインを求められるというものです。
今回は、新規に会員登録するための、会員登録ページもアクセスすることができるようにします。
まとめると、以下のような仕様となります。
- ショップ側はログイン必須とする
- トップページ、会員登録ページは、ログインなしでアクセス可能とする
※前提として、EC-CUBE のバージョンは3.0.13を利用しています。また、プラグイン機構を利用したカスタイズではなく、本体のコードを直接変更するカスタマイズ例です。
「システムに業務を合わせる」妥協は終わりにしませんか。複雑な要件も100%叶える、ベンダー依存のない自社専用EC基盤を。
自社要件を相談する
ログインが必要なページの定義を追加します
カスタマイズの概要
ログインの制御を追加するには、大掛かりなロジックを追加する必要ありません。
どのページでログインを必須にするか、という定義を追加するだけでOKです。
src/Eccube/Application.php の558行目付近に、「security.access_rules」という定義が記述されています。
$this['security.access_rules'] = array(
array("^/{$this['config']['admin_route']}/login", 'IS_AUTHENTICATED_ANONYMOUSLY'),
array("^/{$this['config']['admin_route']}/", 'ROLE_ADMIN'),
array('^/mypage/login', 'IS_AUTHENTICATED_ANONYMOUSLY'),
array('^/mypage/withdraw_complete', 'IS_AUTHENTICATED_ANONYMOUSLY'),
array('^/mypage/change', 'IS_AUTHENTICATED_FULLY'),
array('^/mypage', 'ROLE_USER'),
ここに、ログイン必須にするための定義を追加します。
ログイン必須にするための定義を追加
それでは、実際に以下のように追加してみましょう。
$this['security.access_rules'] = array(
array("^/{$this['config']['admin_route']}/login", 'IS_AUTHENTICATED_ANONYMOUSLY'),
array("^/{$this['config']['admin_route']}/", 'ROLE_ADMIN'),
array('^/mypage/login', 'IS_AUTHENTICATED_ANONYMOUSLY'),
array('^/mypage/withdraw_complete', 'IS_AUTHENTICATED_ANONYMOUSLY'),
array('^/mypage/change', 'IS_AUTHENTICATED_FULLY'),
array('^/mypage', 'ROLE_USER'),
// 以下に定義を追加
array('^/$', 'IS_AUTHENTICATED_ANONYMOUSLY'), // トップページはログインなしでアクセス可
array('^/entry', 'IS_AUTHENTICATED_ANONYMOUSLY'), // 会員登録ページはログインなしでアクセス可
array('^/', 'ROLE_USER'), // すべてのページはログイン必須
);
追加できたら、画面にアクセスしてみてください。
トップページ、会員登録ページ以外のページ(商品一覧・商品詳細など)にアクセスした時に、ログイン画面が表示されれば成功です。
尚、security.access_ruleは、上から順に評価されるため、トップページ、会員登録ページ、その他の順に記述しています。
トップページと会員登録ページは「IS_AUTHENTICATED_ANONYMOUSLY」で、ログイン対象から除外し、その他のページは「ROLE_USER」でログイン必須にする、というイメージです。
EC-CUBEで定義されている権限(ロール)の一覧
いくつか「権限(ロール)」がでてきましたが、EC-CUBEで利用できる権限の一覧を紹介します。
- IS_AUTHENTICATED_ANONYMOUSLY;匿名アクセス可(ログインなしでのアクセス可)
- IS_AUTHENTICATED_FULLY:会員ログインが必要
- ROLE_USER:会員ログインが必要
- ROLE_ADMIN:管理者ログインが必要
「ROLE_USER」と「IS_AUTHENTICATED_FULLY」は、どちらも会員ログインが必要ですが、自動ログイン(remember_me)を有効にした場合の挙動が異なります。
それぞれ、
- ROLE_USER:自動ログイン済の場合はログイン不要
- IS_AUTHENTICATED_FULLY:自動ログイン済の場合であってもログイン必須
という挙動になります。
「IS_AUTHENTICATED_FULLY」のほうが厳しめの権限です。EC-CUBE標準では、マイページの会員情報編集画面など、更新が発生する画面で利用されています。
より詳しいドキュメント
EC-CUBEの認証機能は、内部的には、フレームワークであるSymfony/Silexの機能を利用して実現しています。より詳しい情報を知りたい方は、SymfonyやSilexのドキュメントを参照してください。
また、今回作成したソースコードの差分は以下でもご覧いただけます。是非、参考にしてみてください。
最後に
いかがでしたでしょうか?
開発コミュニティでは、「EC-CUBE」 をより快適で便利なものにしていくために、エンジニアの方はもちろんのこと、ショップ運営者の方、デザイナーの方など、 EC構築・運営に関わる多くの方々のご参加をお待ちしています。
「どうか教えてください!」「バグ見つけましたよ」「こんな機能あったらなぁ」といったテーマごとにスレッドが分かれていますので、気になるキーワードがあれば一度、開発コミュニティへ訪れてみてください。
他の記事もご覧ください
-
「ECサイトとは?」「ECってどんな意味?」今さら聞けない素朴な疑問を分かりやすく説明!サイト制作や運営のポイントも詳しく解説します
ネット通販は私たちの暮らしにすっかり身近な存在となっていますが、皆さんは「ECサイト」というものについてどのくらい知っていますか?本稿ではECサイトの基本知識から成功するための実践的なポイント、おすすめのEC構築方法などを幅広く解説します。
-
ECサイト運営とは:成功するための実務フロー・必要スキル・よくある課題・改善策を徹底解説!EC-CUBEの活用ポイントも
「これからECサイトを構築することになったが、何から手をつけたらよいかわからない」「ECサイトをリニューアルすることになったが、どのパッケージを使えばベストなのかわからない」「ASPカート、パッケージ、オープンソース、フルスクラッチの違いや特徴がいまいち理解できていない」とお悩みのご担当者は多いのではないでしょうか?この記事ではECサイト制作・構築のステップ、よくある困りごとと対策などを解説していきます。ECサイトをこれから立ち上げる予定の方、リニューアルを検討している方にとって何かひとつでもお役に立てば幸いです。
-
ECサイトの作り方ガイド【初心者向け】無料で始めるECサイト作成の全手順
「ECサイトを作りたいけど、何から始めればいいのか分からない…」というあなた、ご安心ください!ECサイトを立ち上げるまでの流れや準備すること、注意点などを詳しく解説します。無料でサイトを作れる便利なサービスもご紹介していますのでぜひご覧ください。
