-
Notifications
You must be signed in to change notification settings - Fork 130
マイページ開発
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_login
、mypage_logout
、
mypage_login_exec
、mypage_password
以外のメソッドについて認証がかかる仕様となっています。
メソッドのプレフィックスによって、認証対象となるユーザーグループが決定される仕組みとなっていますので、今回作成しているマイページにおける認証コンテンツを作成するには、メソッド名にプレフィックスとして
mypage_
を付け加えます。
今回、Member
モデルを利用していますが、baserCMS が提供している、 users
テーブルを利用する仕様となっています。
これは、Member::$useTable
に users
が明示的に定義されている為です。
管理ユーザーと、会員ユーザーを別管理にしたい場合など、users
テーブル以外で、ユーザーを管理したい場合は、別途テーブルを準備し、Member::$useTable
で明示的に指定すれば変更可能となります。
ただし、その際、2点注意事項があります。
baserCMSが提供する、Member
モデルは、User
モデルを継承している為、UserGroup
モデルとアソシエーションする前提となっています。別途テーブルを準備する場合、user_group_id
フィールドを準備し、UserGroup
と関連付けを行わないと、ユーザーグループで登録している、認証プレフィックス設定が無効となり正常に動作しません。
無効とする前提の場合は、別途ユーザー管理用のモデルを準備した方が無難な選択です。
baserCMSが提供するユーザー管理機能は、users
テーブルのユーザーを管理する為の機能となりますので、テーブルを変更した場合、その機能では管理する事ができません。
別途準備した、テーブルに対する、一覧、新規登録、編集、削除等の管理機能は、独自で実装する必要があります。