前回のブログでCakePHP Shellを作成しましたが、そのシェルの中でAuth Componentを利用する際にはまったので書いて見ます。

ご存知、Componentを読み込む場合はコントローラーのメンバ変数として

	var $components = array('Auth');

のように書くだけですが、Shellの場合はこうやってもComponentを読み込んでくれません。

Shellでコンポーネントを利用する場合は以下のように関数内で呼び出してやることで解決できました。

function main(){
    App::import('Component','Auth'); 
    $this->Auth = new AuthComponent(null); 

}

さて、なぜAuth ComponentをShell内で使いたかったかというと、自分の場合、Auth->password() 関数を利用してパスワードをハッシュさせた後、ユーザーを追加したかったからです。

以下、Shell内でのユーザー作成に使ったコードです。

$username = [NEW_USERNAME];
$password = $this->Auth->password([NEW_PASSWORD]);

$retData = $this->User->findByUsername($username);
if(empty($retData['User']) ){
    $data = array("User" => array(
                           "username" => $username,
                           "password" => $password,
                           )
                       );
    $this->User->save($data);
}

最後に、以下参考になったサイトです。

Cookbook 認証 – http://book.cakephp.org/ja/view/172/%E8%AA%8D%E8%A8%BC

CakePHP: Creating a Custom Shell for Adding Users for Use With AuthComponent – http://www.springenwerk.com/2008/07/cakephp-creating-custom-shell-for.html

About ktatsuki

ktatsuki

ケートリック株式会社 代表をしています。 が、根っからのエンジニア脳です。 IBM Notes/Dominoの開発を得意としますが、 C++ / Java / PHP / Javascript などの言語を使ってWEBアプリ、iPhone / Android アプリ開発などをしたりします。 XPagesの仕事をしているとテンションが通常の1.25倍ぐらい高くなります。 I am owner of KTrick Co., Ltd. and Notes/Domino developer. IBM Champion for 2015 - 2017. I am interested in web application development and preferred languages are Notes/Domino, C++ / Java / PHP / Javascript.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です