سلام من پروفایل کاربری راساختم که شبیه زیر است.
http://uupload.ir/files/1rii_untitled.png
من میخواهم فقط آدرس و ایمیل و پسورد آپدیت بشود. چیزی که برای من سخته این پسوردها است. چطور میشه ئسورد قدیمی را پیدا کرد بعدش هم بیاید پسورد جدید را وارد کرد.
edit.blade.php
<form method="POST" action="{{ route('sqlupdate') }}">
@csrf
{{ method_field('PATCH') }}
<div class="form-group row">
<label for="email" class="col-md-1 col-form-label text-md-right">{{ __('ایمیل') }}</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="oldPassword" class="col-md-1 col-form-label text-md-right">{{ __('رمز عبور قدیمی') }}</label>
<div class="col-md-5">
<input id="oldPassword" type="password" class="form-control @error('oldPassword') is-invalid @enderror" name="oldPassword" value="{{ old('oldPassword') }}" autocomplete="oldPassword" autofocus>
@error('oldPassword')
<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">{{ __('رمز عبور') }}</label>
<div class="col-md-5">
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="password-confirm" class="col-md-1 col-form-label text-md-right">{{ __('تکرار رمز') }}</label>
<div class="col-md-5">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
</div>
</div>
<div class="form-group row">
<label for="address" class="col-md-1 col-form-label text-md-right">{{ __('آدرس') }}</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">
{{ __('ثبت') }}
</button>
</div>
</div>
</form>
MyCpntroller
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::find(Auth::id());
$user->password = Hash::make($request->password);
}
return redirect()->back();
}
ابتدا بیاین با ولیدیشن چک کنید اگر مقدار پسورد وارد نشده بود و فیلد فرمش خالی بود مقدارشو برای ذخیره تو دیتابیس ارسال نکنه و فقط ایمیل و سایر موارد ذخیره بشه ، در صورت وارد شدنش اعمال کنه و ذخیره کنه . کاری نداره این مورد .
درباره پسورد قدیمی خوب اگه با md5 یا هرچیز دیگه ذخیره کردینش پسورد رو از قبل ، بیاین مجدد پسوردی که داخل فیلد پسورد قدیمی وارد میشه رو md5 کنید و با مقدار داخل دیتابیس مقایسه کنید اگه اوکی بود مقدار های پسورد جدید وارد شده رو جایگزین کنید همین .
من همین الان ولیدیشن را چک کردم
$this->validate($request, [
'oldPassword' => Auth::user()->password,
'password' => ''required|confirmed|min:6|different:password',
]);
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟