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

会員制サイトの構築

 

 1  |  2   | 次のページ>

sephi > 会員制サイトの構築 @ 2012/6/25 19:39
初めて投稿させていただきます。
よろしくお願いいたします。

公開サイトの利用ユーザも全員ログイン必須の会員制サイトを考えております。

少し管理画面を試し、下記の過去投稿
http://forum.basercms.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=36&forum=5
も拝見したところ、ログインユーザの管理は「管理者側」のみの機能であり
一般ユーザの会員管理は自前で実装が必要と認識しております。

考えられるパターンとしては、
1. 新規テーブル、新規コントローラで一般ユーザ管理を実装する
2. 既存のユーザ管理を拡張して、一般ユーザも一元管理する
があると思いますが、
2.だと管理側にログインしているようなフローになり不自然な気がします。

baserCMSにおいて一般ユーザ管理をするには、1.のまるごと新規で実装するのが
一番自然でしょうか。

■ BaserCMSのバージョン:2.0.2
■ レンタルサーバー名:ニフティクラウド
■ スマートURLの利用: ON
■ 設置フォルダ: ドキュメントルート
■ 利用しているデータベース: PostgreSQL
goichi > Re: 会員制サイトの構築 @ 2012/6/26 21:55
こんにちは(^^

引用:
baserCMSにおいて一般ユーザ管理をするには、1.のまるごと新規で実装するのが
一番自然でしょうか。

個人的な見解ですが、私もそのように思います。
以前のバージョンで会員機能を追加しようとした事があるのですが、
(自社サイトだったので、結局、他の方法で目的を果たしましたが、試みとして実験した事がありました)

1.ユーザー側が登録フォーム入力(仮登録)
2.確認メール送信(確認用URL記載)
3.確認用URLクリックで本登録
4.ユーザーがマイページで登録情報変更

という流れを考えたとき、
既存の管理機能と一緒になるのが、ちょっと気持ち悪かったこともあり、やはり分けて作りました。
幸いにして、cakePHPのAuthコンポーネントも普通に機能拡張の中で利用できますし、2.0x系統でどうかわかりませんが、けっこうサックリ出来そうな気がします。

あまり参考にならないかもしれませんが、まぁ、一個人の意見として投稿しておきます。m(__)m

sephi > Re: 会員制サイトの構築 @ 2012/6/27 19:01
ご回答ありがとうございます。

やはり別途追加する形がよさそうですね。
既存の管理画面で一般ユーザをどう管理できるようにしていくかが課題となりそうですが、
それは地道に検証していってみようと思います。

一度ご検討された方の意見をいただくのはとても勇気づけられます。
ありがとうございました!
arata > Re: 会員制サイトの構築 @ 2012/6/27 21:48
sephiさん、こんにちは!

私も以前に検証してみたのですが、もともとあるUserコントローラ、Userモデルを継承したコントローラ、モデルを作成して、
/baser/config/baser.php を /app/config にコピーして、マイページプレフィックスを解除して。。。
といった感じだと、ひょっとしたらできるのかな?って思ってますん!

とても有用そうな範囲のことなので、私も改めて試してみようとは思ってますー丶(・ω・)ノ

■ 不明点解消できるかも。逆引きガイドもあります baserCMS公式wiki
■ Twitter:@arata

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

最新版では試してないですが、arataさんのおっしゃるように、僕も既存のUserモデルを継承したMemberモデルで実装した経験があります。
その方が認証まわりをそのまま引き継げるので利便性が高いかと思います。

ちょっと時間見つけてテストしてみますね。

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

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総合サービスサイト ビーコミ

ryuring > Re: 会員制サイトの構築 @ 2012/6/28 17:51
追記です。

さっき投稿したマイページデモ用のファイルセットを追加しました。
こちらを利用してみてください。

マイページ開発デモ用のファイルセットを追加する

baser フォルダ配下に追加していますので、app フォルダ内にコピーして雛形として利用してください。

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

goichi > Re: 会員制サイトの構築 @ 2012/6/28 20:47
引用:
さっき投稿したマイページデモ用のファイルセットを追加しました。

おおっ、すごい! 面白い! 可能性が広がりますね!
arata > Re: 会員制サイトの構築 @ 2012/6/29 0:43
引用:
さっき投稿したマイページデモ用のファイルセットを追加しました。
こちらを利用してみてください。

マイページ開発デモ用のファイルセットを追加する

超親切情報ktkr!!!ヽ(≧ω≦)ノ
ありがとございまーす!

■ 不明点解消できるかも。逆引きガイドもあります baserCMS公式wiki
■ Twitter:@arata

sephi > Re: 会員制サイトの構築 @ 2012/7/2 17:44
みなさま

少し寝込んでいる間にたくさん投稿が・・ありがとうございます。
ryuringさんにはファイルセットまで用意していただいて感激しております。
思い切ってフォーラムにご相談させていただいてよかったです。

まだ検証までしきれていませんが、いただいたファイルセットを元に
実装を進めてみたいと思います。
進捗ありましたらまたこちらでご報告します。

本当にありがとうございます!

 

 1  |  2   | 次のページ>

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


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

検索

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

フォーラムガイド


関連リンク

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

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