baserCMSを使うとある指定されたページに認証機能をつけることができます。
今回は認証機能を使ってブログ(member_blog)を開こうとしたときに認証をかける例。
まずはファイルのコピーから。
cd basercms cp ./baser/config/baser.php ./app/config/ cp ./baser/controllers/members_controller.php ./app/controllers/ cp ./baser/models/member.php ./app/models/ cp -r ./baser/views/members ./app/views/
次にコピーした app/config/baser.php を修正します。
// 行101から
$config['BcAuthPrefix'] = array(
// 管理画面
'admin' => array(
(省略)
),
// マイページ(例)
'mypage' => array(
'name' => 'マイページ',
'alias' => 'mypage',
'loginRedirect' => '/member_blog',
'loginTitle' => 'マイページログイン',
'userModel' => 'Member',
'loginAction' => '/mypage/members/login',
'toolbar' => true
),
);
とりあえず実装するだけならコメントを外すだけで良いです。
今回は(member_blog)を開いた際に、認証をかけログインできたら(member_blog)を開くようにしたいので loginRedirect の部分だけを書き換えています。
また、ログアウトはまだ実装しないので標準を使用。 toolbar を true にしておきます。
次にbaserCMSにログインしてユーザグループの追加を行います。
注意する点は認証プレフィックス設定でマイページを選択します。
このマイページとは config/baser.php で設定している mypage.name になります。
合わせてこのグループに対応するユーザも作成します。
ひとまずこれで認証機能は完成。
http://localhost/basercms/mypage/members/login
を開くとログイン画面が表示できると思います。
先ほど作成したユーザでログインをするとブログ(member_blog)に自動的にページが遷移します。
動作の確認はこれで良いですが、一度ログアウトして
http://localhost/basercms/member_blog/index
にアクセスしてみてださい。
ブログ(member_blog)が正常に表示されると思いますが、今回はこのブログに制限をかけたいのでもう少し修正が必要です。
修正するファイルはテーマ側。
デフォルトのテーマ(nada-icons)ですと layouts/default.php の先頭に下記を追加します。
$url = $html->url();
$pattern = '/member_blog/';
if (preg_match($pattern, $url)) {
if (!isset($this->viewVars['user'])) {
header('Location: '.$bcBaser->getUrl(Configure::read('BcAuthPrefix.mypage.loginAction')));
}
}
こうすることでブログ(member_blog)配下のアドレスが指定された場合に認証済みかのチェックを行い、認証がまだの場合はログインページに遷移することができます。
こんなかんじでbaserCMSで会員制のページを作ることができました。
まだまだbaserCMSの仕組みがわかっていないので書き方が変なところやこうすれば良いみたいなところがありましたら教えてください。
参考ページ
