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

固定ページから、現在ログイン中のユーザ名とパスワードを取得するにはどのようにすればよろしいでしょうか?

masaki > 固定ページから、現在ログイン中のユーザ名とパスワードを取得するにはどのようにすればよろしいでしょうか? @ 2012/10/12 17:19
何度も質問すいません。masakiです。

前回質問させて頂いて、ログイン済みの場合だけフロント画面を表示することは可能になったのですが、
固定ページから、現在ログイン中のユーザ名とパスワードを取得する必要があり、
どのように引っ張ってくれば良いかがわからなく...
※現在ログイン中のユーザ名とパスワードを使って、別のサーバに対してAPIを打つ要件がありまして、セキュリティうんぬんは度外視してください。

とりあえず、「auth.php」を、/app/controllers/components配下にコピーして、
hashPasswordsとpasswordのファンクションを単に元の引数を返すだけに修正して、
データベースにはハッシュ化されないで保存されるようにはしました。
※この方法もスマートなやり方かどうか疑問ですが、私のスキルではこれしか出来なかったので・・・

これで、一応ユーザ名とパスワードを利用する準備は出来たつもりでしたが、
/app/webroot/themed/テーマ名/pages
配下にある固定ページの「〜.php」内でどのようなコーディングで、
ユーザ名とパスワードを取得するのがスマートでしょうか?(そもそも引っ張ってくる方法もわかってませんが・・・)

私がCakePHPやBaserCMSに不慣れで、見当違いな質問をしているかもしれませんが、その場合は申し訳ございません。

■ BaserCMSのバージョン:2.0.5.1
■ スマートURLの利用:ON
■ 設置フォルダ:ドキュメントルート/サブフォルダ
■ 利用しているデータベース:MySQL
■ PHPスキル(自己評価):D
■ OSの種類:CentOS6.3
■ PHPのバージョン:5.3.3
■ データベース種類・バージョン:MySQL 5.1.61
goichi > Re: 固定ページから、現在ログイン中のユーザ名とパスワードを取得するにはどのようにすればよろしいでしょうか? @ 2012/10/13 15:49
こんにちは(^^
出来なかったらごめんなさい。参考までに回答します!

とりあえず、View側でユーザー情報を表示するのに
セッション情報を使うと、たぶん「password」が取得できないんですよね。
そこで、以下のようにcontroller側を修正する必要があると思います。

まず
/baser/controllers/page_controller.php
をappフォルダ側へコピーして
/app/controllers/page_controller.php
を作ります。(以下、コピーしたapp側をカスタマイズしていきます)

page_controller.phpの57行目に、このコントローラーで使用するmodelを指定する箇所がありますが、
デフォルトではユーザー情報を格納したUserモデルを使用していないので、
以下のように書き換えます。(Userというのを配列内に追記しています)
var $uses = array('Page', 'PageCategory','User');


次に436行目付近からはじまる「function display()」に追記をします。
具体的にはこの関数の冒頭に数行追記して、以下のようにします。
function display() {
	
		//とりあえずログインユーザーの情報取得
		$userData = $this->BcAuth->user();
		//ただし、この中にはパスワード情報が含まれないのでDBから参照する
		$userDB = $this->User->findById($userData['User']['id']);
		//View側へ取得情報をセットする
		$this->set('userName',$userData['User']['name']); //name
		$this->set('userPass',$userDB['User']['password']); //password

〜(以下はいじらないでOK)〜


あとはView側で上記でセットした情報を受け取ります。
ユーザー情報は以下の変数に格納されていますので、好きな所で取り出してください。

■ユーザー名
$userName

■パスワード
$userPass



一応、私のローカル環境では動きましたが、いかがでしょうか。
もっと良い方法があるかもしれませんが、とりあえず参考までにお試しください(^^
masaki > Re: 固定ページから、現在ログイン中のユーザ名とパスワードを取得するにはどのようにすればよろしいでしょうか? @ 2012/10/15 10:02
goichi様

ご返信戴きまして誠にありがとうございます。
また、お返事が遅くなって申し訳ありません。

ご返信戴いた通り変更して、無事に解決できました。
前回といい今回といいお世話になりっぱなしで恐縮です。m(__)m

恥ずかしながら、固定ページのコントローラがどれかとか、全然わかってませんでした。
固定ページ内で、

$userinfo = $this->BcAuth->user();

とかやってたりしてました(笑)

また、セッション情報等を調べてて、パスワードはさすがに無いよなーっどうしようかなぁーなんて感じでございました。

情報の引渡し方など、皆さんでは基礎なのかと思いますが、まだまだCakePHPに慣れていない私にとっては、大変勉強になりました。

本当にありがとうございます。非常に助かりましたm(__)m

ryuring > Re: 固定ページから、現在ログイン中のユーザ名とパスワードを取得するにはどのようにすればよろしいでしょうか? @ 2012/10/18 22:37
追記です。

AppController を利用すれば、PagesControllerに手を入れずにすみます。
beforeRenderメソッドを利用します。

function beforeRender () {
	$User = ClassRegistry::init('User');
	$user = $this->BcAuth->user();
	$user = $User->find('first', array(
		'conditions' => array('User.id' => $user['User']['id']), 
		'recursive' => -1
	));
	$this->set('userName', $user['User']['name'];
	$this->set('userPassword', $user['User']['password'];
}

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

masaki > Re: 固定ページから、現在ログイン中のユーザ名とパスワードを取得するにはどのようにすればよろしいでしょうか? @ 2012/10/24 11:35
ryuring様

ご返信戴きまして誠にありがとうございます。
また、お返事が遅くなって申し訳ありません。

戴いたご指摘で、以下の様にしてみましたが、固定ページ内で変数を使った場合、
「Notice (8): Undefined variable: userNamea」となってしまうのですが、
使い方が恐らく間違ってると思うのですが、どの様にすればよろしいでしょうか?

CakePHPに慣れていなく、基本が分かってませんので、その辺はお許しください。

01「./baser/controllers/baser_app_controller.php」を「./app/controllers」配下にコピー
02.「./app/controllers/baser_app_controller.php」の「beforeRender」内の最後に以下のコードを追記
		$User = ClassRegistry::init('User');
		$user = $this->BcAuth->user();
		$user = $User->find('first', array(
			'conditions' => array('User.id' => $user['User']['id']), 
			'recursive' => -1
		));
		$this->set('userName', $user['User']['name'];
		$this->set('userPassword', $user['User']['password'];

03.固定ページのphpで以下の様にとりあえずコードを追加
	echo 'Username = '.$userName;
	echo 'Password = '.$userPassword;

04.固定ページを表示させると、以下のエラーが出る
Notice (8): Undefined variable: userName
Notice (8): Undefined variable: userPassword
ryuring > Re: 固定ページから、現在ログイン中のユーザ名とパスワードを取得するにはどのようにすればよろしいでしょうか? @ 2012/10/26 21:33
こんばんは。

baser_app_controller.php ではなく、 app_controller.php を利用された方がいいと思います。

app フォルダ内にコピペされる場合は、管理画面よりサーバーキャッシュを削除してくださいね。

で、app_controller.php に次のコードを加えてください。

function beforeRender () {
	parent::beforeRender();   // ← これ漏れてたので付け加えてます。
	$User = ClassRegistry::init('User');
	$user = $this->BcAuth->user();
	$user = $User->find('first', array(
		'conditions' => array('User.id' => $user['User']['id']), 
		'recursive' => -1
	));
	$this->set('userName', $user['User']['name'];
	$this->set('userPassword', $user['User']['password'];
}

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

masaki > Re: 固定ページから、現在ログイン中のユーザ名とパスワードを取得するにはどのようにすればよろしいでしょうか? @ 2012/10/29 10:46
ryuring様

ご返信戴きまして誠にありがとうございます。
また、お返事が遅くなって申し訳ありません。

戴いた内容で、実装しましたところ無事に取得できました。
誠にありがとうございます。非常に助かりました。m(__)m

app_controller.phpにて、以下の様に追加して対応しました。

./app/controllers/app_controller.phpの内容

〜 省略 〜

App::import('Core', 'BaserAppController', array('search' => BASER_CONTROLLERS));
/**
 * Controller 拡張クラス
 * 
 * @package			baser.controllers
 */
class AppController extends BaserAppController {

	function beforeRender () {
		parent::beforeRender();
		$User = ClassRegistry::init('User');
		$user = $this->BcAuth->user();
		$user = $User->find('first', array(
			'conditions' => array('User.id' => $user['User']['id']), 
			'recursive' => -1
		));
		$this->set('userName', $user['User']['name']);
		$this->set('userPassword', $user['User']['password']);
	}

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


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

検索

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

フォーラムガイド


関連リンク

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

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