EC-CUBE4でトップページ等以外はログインを必須にする簡易的な会員制サイトを作る方法

EC-CUBE4は自由度の高いECサイト構築システムですが、「規約関連のページは公開しつつ、それ以外のページはログインしないと閲覧できない、会員限定の通販サイトを作りたい」というケースも少なくありません。

本記事では、Symfonyフレームワークのaccess_control機能を活用して、簡易的な会員制サイトを構築する方法をご紹介します。

1. 方法の概要

EC-CUBE4では、Symfonyのセキュリティ設定であるaccess_controlを使うことで、ページごとにアクセス制御を行えます。この機能を利用すれば、特定のURLパスは未ログインユーザーにも公開し、それ以外はログイン必須にすることが可能です。

設定ファイルに制御ルールを追加するだけで実現できるため、大規模なカスタマイズやプラグインの追加は必要ありません。この方法では以下のような構成を実現できます。

  • 公開ページ: ログインページ、ヘルプページ
  • ログイン必須ページ: トップページ、マイページ、商品一覧、その他コンテンツ

2. 実装手順

公開ページとログイン必須ページのルールを設定するには、サーバー上でEC-CUBEのセキュリティ設定ファイルを開きます。このファイルに、公開するページ(例: 会員登録やヘルプページ)とログイン必須とするページのルールを追記します。例えば、会員登録やログインページは未ログインユーザーにも公開し、それ以外のページはログインした会員限定でアクセスできるようにするには、以下の通りに設定します。

// src/Eccube/DependencyInjection/EccubeExtension.php
        // SSL強制時は, httpsのみにアクセス制限する
        $accessControl = [
          ['path' => '^/%eccube_admin_route%/login', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
          ['path' => '^/%eccube_admin_route%/', 'roles' => 'ROLE_ADMIN'],
          ['path' => '^/mypage/login', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
          ['path' => '^/mypage/withdraw_complete', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
          ['path' => '^/mypage/change', 'roles' => 'IS_AUTHENTICATED_FULLY'],
          ['path' => '^/mypage/', 'roles' => 'ROLE_USER'],
+          ['path' => '^/entry', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
+          ['path' => '^/help', 'roles' => 'IS_AUTHENTICATED_ANONYMOUSLY'],
+          ['path' => '^/', 'roles' => 'ROLE_USER'],
        ];

3. まとめ

本記事では、EC-CUBE4のaccess_control機能を使った簡易的な会員制サイトの構築方法を解説しました。この方法を利用すれば、特定のページを公開しつつ、その他のページを会員限定にする柔軟なサイト運営が可能です。設定を変更する際には、アクセス制限に漏れがないよう十分注意し、サイトの目的に応じた安全な運用を心がけてください。

Contact

「コンサルティングや制作、広告運用の事例を教えてほしい」「集客を増やすためにどのような手法があるか、客観的アドバイスがほしい」「とりあえず、今のサイトを見てアドバイスがほしい」など、具体的な相談内容が決まっていない場合でも、お気軽にご相談ください。

Copyright © (株)カジヤ All Rights Reserved.