DEV Community

Cover image for How to change password in laravel 9
shani singh
shani singh

Posted on

How to change password in laravel 9

I am going to explain here, how you can change the password in laravel 9.

I have installed the laravel with Laravel Authentication and going to explain about changing password of logged in user.

Step 1 - Change Password Page:

Create a route for change password

Route::get('/change-password', [App\Http\Controllers\HomeController::class, 'changePassword'])->name('change-password');
Enter fullscreen mode Exit fullscreen mode

Cerate changePassword function in HomeController

public function changePassword()
{
   return view('change-password');
}
Enter fullscreen mode Exit fullscreen mode

Create change-password.blade.php view file in resources/views

@extends('layouts.app')

@section('content')
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">{{ __('Chnage Password') }}</div>

                    <form action="{{ route('update-password') }}" method="POST">
                        @csrf
                        <div class="card-body">
                            @if (session('status'))
                                <div class="alert alert-success" role="alert">
                                    {{ session('status') }}
                                </div>
                            @elseif (session('error'))
                                <div class="alert alert-danger" role="alert">
                                    {{ session('error') }}
                                </div>
                            @endif

                            <div class="mb-3">
                                <label for="oldPasswordInput" class="form-label">Old Password</label>
                                <input name="old_password" type="password" class="form-control @error('old_password') is-invalid @enderror" id="oldPasswordInput"
                                    placeholder="Old Password">
                                @error('old_password')
                                    <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                            <div class="mb-3">
                                <label for="newPasswordInput" class="form-label">New Password</label>
                                <input name="new_password" type="password" class="form-control @error('new_password') is-invalid @enderror" id="newPasswordInput"
                                    placeholder="New Password">
                                @error('new_password')
                                    <span class="text-danger">{{ $message }}</span>
                                @enderror
                            </div>
                            <div class="mb-3">
                                <label for="confirmNewPasswordInput" class="form-label">Confirm New Password</label>
                                <input name="new_password_confirmation" type="password" class="form-control" id="confirmNewPasswordInput"
                                    placeholder="Confirm New Password">
                            </div>

                        </div>

                        <div class="card-footer">
                            <button class="btn btn-success">Submit</button>
                        </div>

                    </form>
                </div>
            </div>
        </div>
    </div>
@endsection

Enter fullscreen mode Exit fullscreen mode

The Output Will look like.

Change Password

Step 2 - Handle the Form Submit.

Create a POST route in routes/web.php file

Route::post('/change-password', [App\Http\Controllers\HomeController::class, 'updatePassword'])->name('update-password');
Enter fullscreen mode Exit fullscreen mode

Create updatePassword function in app/Http/Controllers/HomeController.

public function updatePassword(Request $request)
{
        # Validation
        $request->validate([
            'old_password' => 'required',
            'new_password' => 'required|confirmed',
        ]);


        #Match The Old Password
        if(!Hash::check($request->old_password, auth()->user()->password)){
            return back()->with("error", "Old Password Doesn't match!");
        }


        #Update the new Password
        User::whereId(auth()->user()->id)->update([
            'password' => Hash::make($request->new_password)
        ]);

        return back()->with("status", "Password changed successfully!");
}
Enter fullscreen mode Exit fullscreen mode

the final output will look like.

Change Password

The Complete Video Tutorial is below in the video.

If you face any issue while implementing, please comment your query.

Thank You for Reading

Reach Out To me.
Twitter
Instagram
TechToolIndia YouTube Channel

Top comments (4)

Collapse
 
osagiesammy profile image
Osagie Sammy

Thank you it worked, well done Bro.

Collapse
 
shanisingh03 profile image
shani singh

Glad it helped

Collapse
 
osagiesammy profile image
Osagie Sammy

I have a question, I want activate two factor authentication in my application, I did not use jetstream and the other scaffolding template, how do I implement it. I tried adding jetstream to my application it got messed up

Collapse
 
rifatshampod profile image
Rifat Bin Monsur

Excellent guideline.