Как изменить пароль?

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

Что вы имеете в виду под: Старый пароль важен?

Vrian7 19.06.2019 17:48

Я имею в виду, что старый пароль обязательно должен быть в моем коде.

user9975473 19.06.2019 18:09

Вы не обновляете старый пароль, вы просто не заполняете поле пароля при обновлении профиля, теперь, если вы хотите обновить старый пароль, просто заполните поле пароля.

Vipertecpro 20.06.2019 05:09

@ViperTecPro Да, я хочу это

user9975473 20.06.2019 05:42

Попробуйте просто поставить это if ($request->password !== null)

Vipertecpro 20.06.2019 07:10

Я пробовал, но не решил свою проблему

user9975473 20.06.2019 10:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
6
138
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Другие вопросы по теме