Я хочу редактировать только обновление формы address
, email
и password
. Как изменить пароль? Старый пароль важен.
edit.blade.php
<form method = "POST" action = "{{ route('update') }}">
@csrf
{{ method_field('PATCH') }}
<div class = "form-group row">
<label for = "email" class = "col-md-1 col-form-label text-md-right">{{ __('Email') }}</label>
<div class = "col-md-5">
<input id = "email" type = "text" class = "form-control @error('email') is-invalid @enderror" name = "email" value = "{{ old('email') ? : user()->email }}" required autocomplete = "email" autofocus>
@error('email')
<span class = "invalid-feedback" role = "alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class = "form-group row">
<label for = "password" class = "col-md-1 col-form-label text-md-right">{{ __('Password') }}</label>
<div class = "col-md-5">
<input id = "password" type = "text" class = "form-control @error('password') is-invalid @enderror" name = "password" value = "{{ old('password') }}" required autocomplete = "password" autofocus>
@error('password')
<span class = "invalid-feedback" role = "alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class = "form-group row">
<label for = "address" class = "col-md-1 col-form-label text-md-right">{{ __('Address') }}</label>
<div class = "col-md-5">
<textarea id = "address" type = "text" class = "form-control @error('address') is-invalid @enderror" name = "address" required autocomplete = "address" autofocus>{{ old('address') ? : user()->address }}</textarea>
@error('address')
<span class = "invalid-feedback" role = "alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class = "form-group row mb-0">
<div class = "col-md-1">
<button type = "submit" class = "btn btn-block btn-primary">
{{ __('Register') }}
</button>
</div>
</div>
</form>
Маршрут
Route::post('update', 'Auth\RegisterController@sqlupdate')->name('update');
Регистрконтроллер
public function sqlupdate(Request $request)
{
Auth::user()->update([
'address' => $request['address'],
'email' => $request['email'],
]);
$hashedPassword = auth()->user()->password;
if (Hash::check($request->oldpassword, $hashedPassword)){
$user = User::findOrFail(Auth::id());
$user->password = Hash::make($request->password);
}
return redirect()->back();
}
Я имею в виду, что старый пароль обязательно должен быть в моем коде.
Вы не обновляете старый пароль, вы просто не заполняете поле пароля при обновлении профиля, теперь, если вы хотите обновить старый пароль, просто заполните поле пароля.
@ViperTecPro Да, я хочу это
Попробуйте просто поставить это if ($request->password !== null)
Я пробовал, но не решил свою проблему
Просто внимательно прочитайте приведенный ниже код: -
/**
* Admin My profile : Password update.
*
* @param Request $request
* @param $id
* @return \Illuminate\Http\Response
*/
public function updatePassword(Request $request,$id = 0)
{
$validate = Validator::make($request->all(),[
'old_password' => 'required',
'password' => 'required|confirmed|min:8',
'password_confirmation' => 'required|min:8',
]);
$getUserData = Admin::where('id',$id)->first();
if ($getUserData === null) {
return redirect()->back()->with([
'status' => 'warning',
'title' => 'Warning!!',
'message' => 'Invalid Admin ID.'
]);
}
$validate->after(function ($validate) use ($request,$getUserData,$id) {
if (!Hash::check($request->get('old_password'),$getUserData->password)){
$validate->errors()->add('old_password', 'Wrong old password');
}
});
if ($validate->fails()){
return redirect()->back()->withErrors($validate)->withInput();
}
try{
$getUserData->update([
'password' => Hash::make($request->get('password'))
]);
return redirect()->back()->with([
'status' => 'success',
'title' => 'Success!!',
'message' => 'Admin password updated successfully.'
]);
}catch (Exception $e){
return redirect()->back()->with([
'status' => 'error',
'title' => 'Error!!',
'message' => $e->getMessage()
]);
}
}
С помощью описанного выше метода вы получите представление о том, как мы обновляем пароль, это из одного из моих проектов, для которых я создал три поля, вот скриншот вида: -
Я надеюсь, это поможет
Further more update here is the small snippet for update method specially
$getOldPassword = User::where('id',$id)->first();
if ($request->get('password') === null){
$password = $getOldPassword->password;
}else{
$password = Hash::make($request->get('password'));
}
Что вы имеете в виду под: Старый пароль важен?