Как сменить пароль? - PullRequest
0 голосов
/ 19 июня 2019

Я хочу редактировать только обновление формы 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');

RegisterController

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();
}

1 Ответ

1 голос
/ 21 июня 2019

Просто внимательно прочитайте приведенный ниже код: -

/**
 * 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()
            ]);
    }
}

С помощью вышеприведенного метода вы получите представление о том, как мы обновляем пароль, это из одного из моих проектов, я создал три поля, для которых вот скриншот: enter image description here

Надеюсь, это поможет

Еще больше обновлений - небольшой фрагмент метода обновления специально

 $getOldPassword = User::where('id',$id)->first();
 if($request->get('password') === null){
     $password = $getOldPassword->password;
 }else{
     $password = Hash::make($request->get('password'));
 } 
...