やりたいこと
既存のユーザのユーザ名とパスワードを変更するShellを作りたい。
とある要望から既存のユーザ名とパスワードを変更する必要が出てきたので、いずれまた同じ要望が出てきて他の人が同じ問題で悩まなくていいように、折角ならShell作っとくか、ということで作りました。
環境
- CakePHP 2.2.5
やり方
ポイントは3つです。
1.AuthComponentを読み込ませる
UpdateUserShell.php
App::uses('AuthComponent', 'Controller/Component'); //AuthComponentを読み込む
class UpdateUserShell extends AppShell {
.
.
これが居ないとパスワードがうまく保存出来ません。
AuthComponentの本体は
lib/Cake/Controller/Component/AuthComponent.php
ここにいるので、上記のように記述するとうまくいきました。
※ただし、Userモデルの中で読み込んでいる場合はシェルで指定する必要はありません
2.Shell からモデルを使えるようにする
UpdateUserShell.php
public $uses = array('User');
Shell からUserモデルを使えるようにするために、1文必要です。
3.パスワードは平文を指定する
UpdateUserShell.php
$this->User->id = $id;
$this->User->set(array(
'username' => 'fuga',
'password' => 'newPassword', //パスワードは平文を指定
));
$this->User->save();
平文で指定してやると勝手にハッシュ化してくれます。