タイトルでわかりにくいかもしれませんが、
cakephp3で暗号化した値を編集せずに登録した際の暗号化の流れを知りたいです。
ユーザー(Userテーブル)を編集する画面があります。
作りとしては
編集画面(Userのedit.ctp)
PHP
1<?= $this->Form->input('id', ['label' => 'ID', 'disabled' => 'disabled']) ?> 2<?= $this->Form->input('name', ['label' => '名前') ?> 3<?= $this->Form->input('password', ['label' => 'パスワード']) ?>
Userエンティティでは
PHP
1protected function _setPassword($password) { 2 if (strlen($password) > 0) { 3 return (new DefaultPasswordHasher)->hash($password); 4 } 5 }
をしている状態で、
パスワードに「1234」を入力して登録すると
暗号化された状態でDBに登録されます。
再度編集画面「edit」を開くと
パスワードの項目に暗号化されたパスワードが「***********」と表示されます。
そして次は名前を修正して登録した際、
パスワードは「1234」を暗号化したものが登録されたままの状態になっています。
私のイメージでは「1234」が暗号化されたものが
さらに暗号化されて登録されるのかと思っていたので疑問です。
何か判断されて登録処理が行われるのでしょうか?
変更された値のみ登録処理を行うような流れなのでしょうか?
拙い文章で申し訳ないのですが、教えていただければ幸いです。
よろしくお願いします。
追記
データの登録は以下のようになっています。
PHP
1global $db_datasource; 2$conn = ConnectionManager::get($db_datasource); 3$tbl = TableRegistry::get('Users', ['connection' => $conn]); 4 5$entity = $this->get($id); // 編集しているユーザーのidが入ります。 6// ↑該当するユーザーのデータを取得します。 7 8$entity = $tbl->patchEntity($entity, $data, ['validate' => false]); // $dataには編集画面の項目が格納されています。 9 10$tbl->save($entity, ['atomic' => false, ['checkRules' => false]]; 11$conn->commit();
回答1件
あなたの回答
tips
プレビュー