CakePHP2 モデルからログインしているユーザー情報を取得する

Modelからログインしているユーザー情報を取得したい場合があります。 もちろん $this->Auth->user() では取得できないので一手間かけてあげます。

環境

CakePHP 2.2.2

モデルからログインしているユーザー情報を取得する

AppModel.phpに以下のメソッドを追加します。

やってることはAuthComponent内で行なっていることとそんなに大差はなく、 キーの指定までは必要ないだろうと省いています。

AppModel.php
1
2
3
4
5
6
7
protected function _getCurrentUser() {
    App::uses('CakeSession', 'Model/Datasource');
    $Session = new CakeSession();

    $user = $Session->read('Auth.User');
    return $user;
}

これで $this->_getCurrentUser() を呼び出してあげればユーザー情報が取得できます。

他の方法としては、AuthComponentのインスタンスを生成してuserメソッドをそのまま呼び出してもいいと思います。

※2013/3/28 サンプルコード追記

AppModel.php
1
2
3
4
protected function _getCurrentUser() {
    App::uses('AuthComponent',  'Controller/Component');
    return AuthComponent::user();
}

参考というかパク(ry

参考

CakePHP: get user info in models

Comments