How to Change User’s Password in Laravel

While working on the application, you may want to quickly change the password of a user for some reasons and you don’t have access to the database. Plus, you don’t want to go for forgot password flow. In this article, I show you how to change a user’s password in Laravel without accessing the database.

When it comes to Laravel, it ships with a default ‘users’ table in the database. This table is responsible for storing the user details including credentials like email and password.

Laravel uses their own Hashing to encrypt the password. For changing the password you need to use the same hashing techniques for encryption then only it works with Laravel authentication.

Change User’s Password Using Command Line

There are several features Laravel included in its core. Upon installing Laravel, we get all these features automatically. One of them is Laravel Tinker, a REPL powered by the PsySH package. Laravel Tinker allows us to interact with Laravel database, jobs, events and more.

We can use the Tinker to change the password of a user in Laravel. All we need to know is the email address of a user. So for getting started, open the terminal in your project root directory.

Enter into the Tinker environment by running the command:

php artisan tinker

tinker

Once you enter into the Tinker environment, you’ll have the control over Eloquent ORM. Using the ORM, you can easily change the user’s password. Let’s say the user’s email is ‘admin@laravel.com’ which password needs to change. At first, fetch this user by a statement:

$user = App\User::where('email', 'admin@laravel.com')->first();

get-user

Next, on the user object set the password using the Hash::make() method. For instance, set the password as ‘123456’. So the next statement is:

$user->password = Hash::make('123456');

set-password

Finally, call save() method of Eloquent ORM as follow:

$user->save();

save user

The above 3 commands will change the password of a specified user.

Change User’s Password in Laravel Using Route

You can also change the password through the route. However, it is not recommended. I am just writing about it as this is also the way to change the password. In the route’s callback function, use the same code as we used in the Tinker above. Both would do the exact job. Let’s declare a route ‘changepassword’ and pass the code in the callback function as shown below.

routes/web.php

<?php
Route::get('changepassword', function() {
    $user = App\User::where('email', 'admin@laravel.com')->first();
    $user->password = Hash::make('123456');
    $user->save();

    echo 'Password changed successfully.';
});
?>

Now, run the URL YOUR_DOMAIN_URL/changepassword in the browser. It will call the route and change the user’s password. The developer must remove this route once the password is changed.

Related Articles

If you liked this article, then please subscribe to our YouTube Channel for video tutorials.

2 thoughts on “How to Change User’s Password in Laravel

  1. Well, I have tried the first time the tinker method. and I liked well another one is also very nice but we cant use in the regular case because of security reasons right ???

    1. You are right. Changing the password through the route is not recommended. It’s just for quick fixes. Developers should remove the route once they changed the password.

Leave a Reply

Your email address will not be published. Required fields are marked *