LoginSignup
4
4

More than 5 years have passed since last update.

[baserCMS] マイページ開発

Posted at

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 にアクセスし、ログインページが表示され、先ほど追加したユーザーでログインができる事を確認します。
 

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

カスタマイズの準備

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点注意事項があります。

1. UserGroup モデルとの関連付け

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

2. ユーザー管理機能の作成

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

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4