マイページ開発

baserCMS では、認証された特定のユーザーにのみマイページのようなサービスを提供したい場合、ログイン認証部分を簡単に準備できる API を備えています。
今回は、baserCMS が提供している、 Member モデルと、 MembersController を利用してマイページのログイン認証を実装する開発例をご紹介します。

ログインページの準備とログイングループ、ユーザーの追加

基本設定

マイページのログイン認証の基本設定は、baserCMSが提供する設定ファイルで行います。
/app/Config/setting.php に次のコードを記述します。

<?php
$config['BcAuthPrefix'] = array(
    'mypage' => array(
        // 認証名
        'name'            => 'マイページ',
        // URLに利用するプレフィックス
        'alias'            => 'mypage',
        // ログイン完了後にリダイレクトするURL
        'loginRedirect'    => '/mypage/members/index',
        // ログイン画面に表示するタイトル
        'loginTitle'    => 'マイページログイン',
        // ユーザー管理に利用するモデル
        'userModel'        => 'Member',
        // ログイン画面のURL
        'loginAction'    => '/mypage/members/login',
        // ログアウトを実行するURL
        'logoutAction'=> '/mypage/members/logout',
        // ツールバーの利用可否
        'toolbar'        => false,
        // セッションキー(デフォルトは管理システムと同じキー)
        'sessionKey'    => 'User'
    )
);

このコードは、/lib/Baser/Config/setting.php に記載されており、そのファイルに記載されている設定は、全て、 /app/Config/setting.php で上書き可能です。
 

認証グループ設定

次に管理システムにログインし、フロントサイドにログインする事ができるユーザーグループを作成します。
基本設定を行った事で、ユーザーグループの追加画面に、「認証プレフィックス設定」という項目が表示されていますので、「マイページ」にチェックを入れて保存します。
 

ユーザー追加

認証グループ設定で追加したユーザーグループに所属するユーザーを作成します。
 

ログインページの確認

http://[baserCMSの設置場所]/mypage/users/login にアクセスし、ログインページが表示され、先ほど追加したユーザーでログインができる事を確認します。
 
 

マイページコンテンツの作成

カスタマイズの準備

baserCMS が提供している MemberController には、 mypage_index メソッドのみの定義があり、他のコンテンツを表示するメソッドはありません。 mypage_index をカスタマイズしたり、新しいコンテンツを追加するには、このクラスが記述しているファイルを /app/Controller/ にコピーしてからカスタマイズを行うと、baserCMS のコアをアップデートしやすくなります。
これは、モデルやビューにおいても同様の事が言えます。

 # コントローラーのカスタマイズ
 /lib/Baser/Controller/MembersController.php
        
 /app/Controller/MembersController.php

 # モデルのカスタマイズ
 /lib/Baser/Model/Member.php
        
 /app/Model/Member.php

 # レイアウトのカスタマイズ
 /lib/Baser/View/Layouts/mypage/default.php
        
 /app/View/Layouts/mypage/default.php

 # ログインページのカスタマイズ
 /lib/Baser/View/Members/mypage/login.php
        
 /app/View/Members/mypage/login.php

認証コンテンツの仕組み

MembersController は、UsersController を継承している為、自動的に、mypage_loginmypage_logoutmypage_login_execmypage_password 以外のメソッドについて認証がかかる仕様となっています。
メソッドのプレフィックスによって、認証対象となるユーザーグループが決定される仕組みとなっていますので、今回作成しているマイページにおける認証コンテンツを作成するには、メソッド名にプレフィックスとして mypage_ を付け加えます。
 
 

ユーザーテーブルを変更する

今回、Member モデルを利用していますが、baserCMS が提供している、 users テーブルを利用する仕様となっています。
これは、Member::$useTableusers が明示的に定義されている為です。
管理ユーザーと、会員ユーザーを別管理にしたい場合など、users テーブル以外で、ユーザーを管理したい場合は、別途テーブルを準備し、Member::$useTable で明示的に指定すれば変更可能となります。
ただし、その際、2点注意事項があります。
 

UserGroup モデルとの関連付け

baserCMSが提供する、Member モデルは、User モデルを継承している為、UserGroup モデルとアソシエーションする前提となっています。別途テーブルを準備する場合、user_group_id フィールドを準備し、UserGroup と関連付けを行わないと、ユーザーグループで登録している、認証プレフィックス設定が無効となり正常に動作しません。
無効とする前提の場合は、別途ユーザー管理用のモデルを準備した方が無難な選択です。
 

ユーザー管理機能の作成

baserCMSが提供するユーザー管理機能は、users テーブルのユーザーを管理する為の機能となりますので、テーブルを変更した場合、その機能では管理する事ができません。
別途準備した、テーブルに対する、一覧、新規登録、編集、削除等の管理機能は、独自で実装する必要があります。