Как сменить пароль в laravel laravel 5.2

У меня три поля

1- пароль
2- новый пароль
3- подтверждение пароля — это смена пароля.

Я разрешил условие для пароля, которое должно быть 8 символов, один верхний, один нижний и один специальный символ

но я не могу сменить свой пароль, мой валидатор не работает:

Код моего контроллера:

               public function changepassword(Request $request){
$user = Auth::guard()->user();
$request_data = $request->All();
$validator = $this->admin_credential_rules($request_data);
if($validator->fails()) {
return \Illuminate\Support\Facades\Redirect::to('mujucet')
->with("modal_message_danger", "password must be at least 8 characters, one upper and lower case, and a number");
} else {

$current_password = $user->password;
if(md5($request_data['password']) == $current_password) {
$user_id = $user->id;
$obj_user = User::find($user_id);
$obj_user->password = md5($request_data['new_password']);
$obj_user->save();

return \Illuminate\Support\Facades\Redirect::to('mujucet')
->with("modal_message_success", "Password has been changed successfully");
} else {
return \Illuminate\Support\Facades\Redirect::to('mujucet')
->with("modal_message_danger", "wong old password");
}
}
}

public function admin_credential_rules(array $data){
$messages = [
'new_password.required' => "Zdejte nové heslo.",
'password.required' => "Zadejte souÄasné heslo.",
];

$validator = Validator::make($data, [
'password' => 'required|min:8|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/|confirmed',
'new_password' => 'required|min:8|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/|confirmed',
], $messages);

return $validator;
}

Я застрял в этой проблеме, мне нужна твоя помощь.
Любая помощь будет высоко оценена!

1

Решение

Какие ошибки дает вам валидатор? Вы можете получить их с $validator->errors(),

Глядя на код, я думаю, вам нужно удалить confirmed правило из валидатора поля пароля (так как вам не нужно подтверждать старый пароль). Затем вам нужно изменить поле подтверждения нового пароля, чтобы иметь имя new_password_confirmation,

Ваши три поля должны быть: password, new_password а также new_password_confirmation,

Валидатор должен быть:

$validator = Validator::make($data, [
'password' => 'required|min:8|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/',
'new_password' => 'required|min:8|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/|confirmed',
], $messages);

Вы переопределили хеш-код по умолчанию для использования MD5 для паролей? По умолчанию Laravel использует bcrypt, который намного более безопасен для хеширования конфиденциальных данных.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector