管理者権限を持つユーザーが特定のユーザー ID のフォームを開くことができるサイトの管理機能に取り組んでいます。このフォームから、ユーザーの権限を変更したり、ユーザーのパスワードを変更したり、その他の方法で変更したりできます。
ただし、フォームがモデルから構築される場合、パスワード フィールドはデータベースからハッシュ化されたパスワードを取得し、パスワード フィールドに入力します。その結果、管理者がフォームを保存しようとすると、ハッシュ化されたパスワードが平文として扱われるため、再度ハッシュ化されて元のパスワードが上書きされます。
私が必要としているのは、管理者ユーザーがフォームを変更できるようにする方法ですが、パスワードが変更された場合にデータベースでパスワードをハッシュして更新するだけです。
私の考えは、パスワードを空白に設定するフォームを作成することです。
ビュー/ユーザー/編集.ctp:
echo $this->Form->input('User.password',array(
'value' => '',
'type' => 'password',
'autocomplete' => 'off'
)
);
save
そして、パスワードをスキップするために何らかのチェックを行います。しかし、これは私が立ち往生しているところです。
コントローラー/userscontroller.php
public function edit($id = null)
{
$this->User->id = $id;
if ($this->request->is('get'))
{
$this->request->data = $this->User->read();
} else {
//Something here????
if ($this->User->save($this->data))
{
$this->Session->setFlash('Your user has been updated.');
$this->redirect(array('action' => 'index'));
} else
{
$this->Session->setFlash('Unable to update your user.');
}
}
$this->set('groups',$this->User->Group->find('list'));//, array( 'fields' => array('id', 'name'))));
$this->set('sites',$this->User->Site->find('list'));//, array( 'fields' => array('id', 'name'))));
}
これを確認し、変更がない場合にパスワードが更新されないようにするにはどうすればよいですか?
決定された解決策:
提供された回答に従って、ユーザーが通過するサインアップ検証を再利用する同じページで2番目のフォームを使用しました. サイト/グループの権限を更新すると、ユーザーはあるフォームを介して送信され、パスワードは別のフォームを介して送信されます。