Столкнулся с ситуацией, требуется в админке добавить поле «пароль». Добавил и обнаружил две проблемы:
- при сохранении пользователя пароль записывался в чистом виде (а нужно Bcrypt)
- пароль отображался в поле ввода, и при сохранении опять сохранялся/шифровался в базу,т.е. шифрование шифрованного пароля по факту убивало пароль
В общем решение:
1. добавляем виртуальное поле в модель пользователя с названием newpassword и прописываем что если пароль не пуст, то шифруем и записываем в поле password
1 2 3 4 |
public function setNewPasswordAttribute($value){ if($value) { $this->attributes['password'] = bcrypt($value); }} |
2. переделываем поле на форме в админке
1 2 3 |
AdminFormElement::password('newpassword', trans('admin.users.tab_general.password')) ->required() ->allowEmptyValue(), |
Итог:
- При сохранении если поле пустое(а оно по умолчанию пустое), то пароль не меняется.
- Если пароль не пуст, то шифруется и сохраняется в базу.
- Помечено звездочкой как обязателен, то также может быть и пуст (кому то может и не надо)