■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

Re: 会員制サイトの構築

ryuring > Re: 会員制サイトの構築 @ 2012/6/28 17:27
こんにちは。

baserCMS2にてマイページの作成方法を検証しました。
プログラムの調整が必要でしたので調整しています。次の修正パッチをあてて下さい。
* [2.0.2] 認証プレフィックスが正常に動作しない 

基本的に、次の記事の手順の則って作業を行うとログインページが簡単につくれます。
* マイページ用のログイン認証を簡単に作る方法 

ただ、この記事は、1系用ですので、若干読み替えが必要です。
/app/config/baser.php の調整の際は、次のように変更してください。
マイページ部分のコメントアウトを解除するだけです。

	$config['BcAuthPrefix'] = array(
		// 管理画面
		'admin' => array(
			'prefix'		=> 'admin',
			'alias'			=> $adminPrefix,
			// 認証後リダイレクト先
			'loginRedirect'	=> '/'.$adminPrefix,
			// ログイン画面タイトル
			'loginTitle'	=> '管理システムログイン',
			'loginAction'	=> '/'.$adminPrefix.'/users/login'
		),
		// マイページ
		'mypage' => array(
			'alias'			=> 'mypage',
			'prefix'		=> 'mypage',
			'loginRedirect'=>'/mypage/users/index',
			'loginTitle'=>'マイページログイン',
			'userModel'		=> 'User',
			'loginAction'	=> '/mypage/users/login'
		),
		// モバイルマイページ
		/*'mobile_mypage' => array(
			'alias'			=> 'mobile_mypage',
			'prefix'		=> 'mobile_mypage',
			'loginRedirect'=>'/m/mypage/users/index',
			'loginTitle'=>'マイページログイン',
			'userModel'		=> 'User',
			'loginAction'	=> '/m/mypage/users/login',
			'userScope'		=> array('User.user_group_id' => 1)
		)*/
	);



この状態で、マイページ用のユーザーグループを作成し、そのグループのユーザーを作成します。
そして、/mypage/users/login にアクセスするとマイページ用のログイン画面が表示されますのでログインしてみます。
もちろん、この状態では、ログイン先が作成されていませんのでエラーとなります。

次にログイン画面の作成について書いていきます。


■ マイページ用のアクションをどうやって作るか
初期設定では、ログイン後のアクションが、/mypage/users/index となっていますので、
ユーザーコントローラーのカスタマイズが必要です。
ただ、ユーザーコントローラーをそのままカスタマイズしてしまうと、baserCMSコアのアップデートに耐えられなくなってしまうので、
/app/controllers/ 内に複製してカスタマイズをするのも一つの手です。
もう一つの方法として、UsersController を 継承する MembersController を作成する方法があります。

■ MembersController でマイページ用のアクションを作成する
まず、 baser.php の 次の部分を変更します。

			'loginRedirect'=>'/mypage/users/index',
			'loginTitle'=>'マイページログイン',
			'userModel'		=> 'User',
			'loginAction'	=> '/mypage/users/login'

               ↓

			'loginRedirect'=>'/mypage/members/edit',
			'loginTitle'=>'マイページログイン',
			'userModel'		=> 'User',
			'loginAction'	=> '/mypage/members/login'



そして、/app/controllers/members_controller.php を作成します。
今回は、Userモデルの1つ目のデータを取得してビューに引き渡すだけのメソッドとしています。

(例)
<?php
App::import('Controller', 'Users');
class MembersController extends UsersController {
	var $name = 'Members';
	function mypage_edit() {
		$this->set('data', $this->User->find('first'));
	}
}


■ マイページ用のビューを作成する
マイページ用のビューは、 /app/views/ においても、 /app/webroot/themed/{テーマ名}/ においてもかまいません。
/app/views/ に置く例として、ビューファイルを2つ作成します。

/app/views/members/mypage/edit.php
(例)
<h1>メンバーマイページ</h1>
<?php var_dump($data) ?>


/app/views/layouts/mypage/default.php
(例)
<?php $bcBaser->xmlHeader() ?>
<?php $bcBaser->docType() ?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<?php $bcBaser->charset() ?>
<?php $bcBaser->title() ?>
<?php $bcBaser->scripts() ?>
</head>
<body id="<?php $bcBaser->contentsName() ?>" class="normal">
	<?php $bcBaser->content() ?>
<?php echo $cakeDebug; ?>
</body>
</html>


■ モデルをカスタマイズしたい場合
Userモデルを継承するMemberモデルを作成します。
テーブルをそのまま users を利用する場合は、useTable オプションを記述します。

<?php
class Member extends User {
	var $name = 'Member';
	var $useTable = 'users';
}


コントローラーで利用するモデルを変更します。
UserGroupモデルも一緒に付けておく必要があります。

var $uses = array('Member','UserGroup');



■ 利用するテーブルを members に変更したい場合
Memberクラスの useTable プロパティを削除すると members テーブルを利用する設定になりますので、
users テーブルを参考に、テーブルを作成します。
こうする事で、usersテーブルのデータと別管理にする事ができます。
※ この場合、管理側の一覧や編集ページも、コントローラーのメソッドをオーバーライドするなりして準備する必要があります。


■ ログインしてみる
最終的に、/mypage/members/login よりログインを行い、ログインに成功すると /mypage/members/edit にリダイレクトします。


長くなってしまいましたがこんなところでしょうか。
参考にしてみてください。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
13 人のユーザが現在オンラインです。 (13 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 13