2013年4月20日土曜日

baserCMSで会員制のページを作る

最近、baserCMSでホームページを構築しようとしていてそこで調べたことをメモ程度に。
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の仕組みがわかっていないので書き方が変なところやこうすれば良いみたいなところがありましたら教えてください。



参考ページ





2013年4月10日水曜日

FuelPHPのチートシートみたいなものを作った

もともとは社内の勉強会ネタで作っていたもの。
http://fuelphpcheatsheet.aws.af.cm/

よく使うものとかを中心に、書いていますがまだまだ情報が少なすぎる状態です。

AppFogを使って見たかったのでそれも兼ねて。
ぼちぼちと更新していきます。



AppFogでの公開については以下のサイトを参考にしました。