🦔
Laravel-Adminでユーザーのパスワードを正常に保存する
Laravel-Adminでユーザー情報を管理していると、
「新規作成時にパスワードを指定した場合はハッシュかして保存する」のは当然ですが、パスワード以外のユーザー情報の更新時には「パスワード値はそのまま値を変更せずに保存する」必要があります。
このようにしてみると当たり前のことですが、
Laravel-Adminでは新規作成も更新も両方 form
メソッドで表しているのがややこしいポイントなんですね。
では、
- 新規作成時にはパスワードはハッシュ化して保存する
- パスワード以外の情報更新時にはパスワードは値を変更しない
- パスワード更新時にはパスワードをハッシュ化して保存する
これらの条件をもとに実装していきます。
実装する
まず、
formメソッドには普通にパスワード入力項目を入れます
$form->password('password', 'パスワード');
そして、次が肝心なのですが、formメソッドの中に「保存する前の処理」を記入していきます。
$form->saving(function (Form $form) {
if ($form->password && $form->model()->password != $form->password) {
$form->password = bcrypt($form->password);
}
});
formにパスワードが記入されていて、今のパスワードと異なるパスワードが送られてきた場合に、ハッシュかして保存するというロジックになっています。
これでLaravel-Adminで正常にパスワードを保存することができます。
少しつまづいたのでメモにして残してみました。
Discussion