How to record last login time and IP address of a user In Laravel

 

To record the last login time and IP address of a user in Laravel, you can use Laravel's built-in authentication system along with some custom logic. Here's a step-by-step guide:


Step 1: Set Up Authentication

If you haven't already, set up the authentication system in your Laravel application using the following command:


composer require laravel/ui

php artisan ui bootstrap --auth


This will create the necessary authentication scaffolding including login, registration, and user management.


Step 2: Modify the Login Process

Open the `app/Http/Controllers/Auth/LoginController.php` file and override the `authenticated` method to record the last login time and IP address:


use Illuminate\Support\Facades\Auth;


protected function authenticated(Request $request, $user)

{

    // Update last login time and IP address

    $user->last_login_at = now();

    $user->last_login_ip = $request->getClientIp();

    $user->save();

}


Step 3: Update User Migration

Open the `database/migrations/xxxx_xx_xx_create_users_table.php` migration file and add the necessary columns for the last login time and IP address:


public function up()

{

    Schema::create('users', function (Blueprint $table) {

        // Other columns...

        $table->timestamp('last_login_at')->nullable();

        $table->string('last_login_ip')->nullable();

        $table->timestamps();

    });

}


Run the migration to update the users table:


php artisan migrate


Step 4: Display Last Login Information

You can now display the last login time and IP address in your views or user profile page using the `last_login_at` and `last_login_ip` attributes of the authenticated user.


With these steps, your Laravel application will record the last login time and IP address of a user each time they log in. This information can be useful for security monitoring and user activity tracking.