CakePHP Shells内でAuth Componentを使ってUserを追加

前回のブログで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