逆引きガイド/会員ログインの仕組みを作りたい
提供: baserCMS公式ガイド
(馬庭 編集中です) baserCMSではプレフィックス認証機能を利用して、会員ログインの仕組みを作ることができます。
目次
プレフィックス認証機能とは?
プレフィックス認証とは、URLの一部に特定の文字列をプレフィックス(接頭辞)として付与し、そのプレフィックスが付与されたURLにアクセスをすると、ユーザーにログイン認証を求める機能です。もっとも身近な使用例は、baserCMSの管理画面です。管理画面にはデフォルトで「admin」というプレフィックスが付けられており、管理機能を構成するURLには、全て「admin」という文字列が含まれています。その結果、ユーザーが管理画面にアクセスする場合(つまり「admin」プレフィックスの付与されたURLにアクセスする場合)に、ログイン認証が求められるようになっています。
プレフィックス認証機能を利用する。
プレフィックス認証機能を利用するには、baserCMSのファイルを一部コピーして書き換える必要があります。以下にその手順を示します。
setting.phpのコピーと編集
baserCMSの設定用ファイルをコアファイル群が入ったフォルダ「/lib/Baser」から、開発用のフォルダ「/app」以下にコピーして、コピー先のファイルを編集します(コアファイルを開発用フォルダにコピーして使用することで、baserCMSのバージョンアップ時に拡張部分が上書きされてしまう事故を防ぎます)。
コピー元
/lib/Baser/Config/setting.php
コピー先
/app/Config/setting.php
setting.phpの129行目付近から編集する
プレフィックス認証部分のコメントアウトを外して、「admin」以外のプレフィックスを機能させます。ここでは例として「mypage」というプレフィックスを追加しています。なお、この「mypage」の記述は、サンプルとしてsetting.phpに最初から記載されていますので、コメントアウトをするだけで結構です。
'mypage' => array( 'name' => 'マイページ', 'alias' => 'mypage', 'loginRedirect' => '/mypage/members/edit', 'loginTitle' => 'マイページログイン', 'userModel' => 'Member', 'loginAction' => '/mypage/members/login', 'toolbar' => false ),
これでプレフィックスに「mypage」が追加されました。
ログインできるユーザーグループとユーザーを作成する
管理画面の[ユーザー管理機能]をつかって、ログインユーザーを作成していきます。
ユーザーグループの作成
ユーザーグループを新規登録します。前述のsetting.phpの編集が上手く出来ていれば、ユーザーグループの作成フォームにて「認証プレフィックス」が選択できるようになっています。選択肢の中から「mypage」を選びます。これによって、「mypage」プレフィックスを利用したページにアクセスできるユーザーグループが出来上がります。
ユーザーの作成
ユーザーを新規登録します。作成するユーザーは、上記グループ「mypage」グループに所属させてください。その結果、「mypage」にログインできるグループのユーザーとして登録されます。
ログイン画面を表示する
次にログイン画面の表示を行います。ログイン画面は前述のsetting.phpでコメントアウトした中にある、「loginAction」の値で設定できます。今回の例だと以下のURLでログイン画面が表示されます。
http://(baserCMSのインストールURL)/mypage/members/login
この画面が表示されたら、先ほど作ったユーザーでログインを実行します。認証に成功すると、setting.phpの「loginRedirect」の値で設定したURLにリダイレクトします。今回の例だと以下のURLに転送されます。
http://(baserCMSのインストールURL)/mypage/members/edit
これにてログイン認証の完了です。
ログインが必要なページを作りこむ為のヒント
今回の例の場合、「/mypage/members/edit」というURLは、以下のファイルを参照します。
/lib/Baser/Controllers/MembersController.php
そして、このファイルの中にある、
mypage_edit()
というアクションを呼び出しています(このようなURLとアクションの呼び出しの仕組みについては、CakePHPの情報を参照してください)。例えば、習い事やスクールの会員ページを作りたいとして、「Member」という表記ではなく「Student」を使用したい場合、setting.phpの中で「userModel」を「Student」、「loginAction」の値を「/mypage/students/login」にし、「loginRedirect」の値を「/mypage/students/index」とした上、次の場所に以下のファイルを設置してください。
/app/Controllers/StudentsController.php
そして、その中にログイン成功後のリダイレクト先として以下のアクションを作成します。
mypage_index()
これでログイン時に、上記のアクションを参照するようになります。処理の中身や表示する内容の作成は、CakePHPの流儀に従って用意します。