本記事では、管理画面にログインしている場合のみアクセス可能な新規ページの作り方を紹介します。
カスタマイズ前にデバッグモードを設定しておくと、エラーが起きたときに詳細情報が表示されるようになります。
エラー箇所を探しやすくなるので、開発前に設定しておくのをオススメします。
デバッグモードの設定方法については こちらの記事 で解説しています。
実装後の状態
こちらの記事で作成した『メーカー情報登録ページ』ですが、URLさえ知っていれば誰でもアクセスができてしまいます。管理側のメンバーだけでアクセスできる状態が理想のため、そのように実装します。
管理画面にログインしていない状態でページにアクセスすると、ログイン画面が表示されるようになります。
ログインすると、ページにアクセスできます。(ログインした状態でページにアクセスした場合、最初のログイン画面はスキップされます。)
実装の手順
以下の2つを修正することで実装できます。
- 対象ページのControllerを修正
- 対象ページのTwigテンプレートを修正
Controllerのルーティングに、%eccube_admin_route% を追加
実装例を見てもわかる通り、URLのドメインの後に「administrator」が入ると、ログインしていないユーザーはアクセスできないページになります。
よって、アクセス制限をかけたいページのControllerを開き、ルーティング部分を修正します。
@Route("/%eccube_admin_route%/xxx")
「xxx」にはアクセス制限をかけたいページのURLを入れます。
実装例では「(ドメイン名)/maker_register」のページにアクセス制限をかけるため、MakerRegisterControllerのルーティングを以下の通り修正します。
@Route("/%eccube_admin_route%/maker_register", name="maker_register")
Twigテンプレートの {% extends ‘default_frame.twig’ %} を削除
対象ページのTwigテンプレートに {% extends ‘default_frame.twig’ %} の記述がある場合、これを削除します。(管理画面から作成したページにはデフォルトで記述されます。)
以上で修正は完了です。
管理画面からログアウトしていることを確認し、「(ドメイン名)/administrator/(ページURL)」にアクセスしてみましょう。EC-CUBEのログイン画面が表示され、ログイン後にページにアクセスできるようになっていればOKです!
まとめ
以上、管理ユーザーのみアクセス可能なページの作成方法を紹介しました。
EC-CUBE管理画面以外で外部ユーザーに見られたくないページがある場合に、ぜひ利用してみてください。