Pada tutorial kali ini kita akan membahas bagaimana cara menyimpan informasi login terakhir dari user di Laravel, misalnya tanggal dan ip address pengguna ketika login. Untuk kasus tertentu, informasi ini akan sangat berguna. Misalnya, aplikasi kita memang memerlukan informasi login untuk digunakan pada proses yang lain.
Kita akan membahas bagaimana langkah-langkah menyimpan informasi login terakhir dengan menggunakan Laravel.
Database Migrations
Langkah pertama, kita perlu menambahkan kolom pada table users untuk menyimpan informasi login terakhir dari user.
php artisan make:migration add_login_info_to_users --table=users
Pada contoh ini kita akan menambahkan kolom last_login_at
dan last_login_ip
untuk menyimpan tanggal terakhir dan ip address user ketika login.
class AddLoginInfoToUsers extends Migration { public function up() { Schema::table('users', function (Blueprint $table) { $table->datetime('last_login_at')->nullable(); $table->string('last_login_ip')->nullable(); }); } // }
Menyimpan informasi login
Untuk menyimpan informasi login ini, terdapat beberapa cara yaitu dengan menggunakan method authenticated
pada class LoginController dan menggunakan Event Listener. Kita akan membahas kedua cara tersebut disini.
Event Listener
Laravel memungkinkan kita untuk menangkap event-event yang terjadi pada aplikasi kita. Laravel akan mentrigger beberapa event selama proses autentikasi. Salah satunya adalah event Login (Illuminate\Auth\Events\Login).
Ketika pengguna login ke aplikasi kita, laravel akan mentrigger event Login sehingga kita bisa menggunakan event ini untuk menyimpan informasi login user menggunakan event listener.
Untuk membuat event listener gunakan perintah artisan make:listener
. Disini kita akan menggunakan nama RecordLoginInfo untuk event listenernya.
php artisan make:listener RecordLoginInfo
Kemudian update data user dengan menggunakan kode dibawah ini.
<?php namespace App\Listeners; use Carbon\Carbon; use Illuminate\Auth\Events\Login; class RecordLoginInfo { public function handle(Login $event) { $event->user->forceFill([ 'last_login_at' => Carbon::now()->toDateTimeString(), 'last_login_ip' => request()->getClientIp() ])->save(); } }
Service Provider
Langkah terakhir, daftarkan event handler yang telah kita buat pada proses diatas pada property $listen
di class EventServiceProvider.
use App\Listeners\RecordLoginInfo; use Illuminate\Auth\Events\Login; class EventServiceProvider extends ServiceProvider { protected $listen = [ Login::class => [ RecordLoginInfo::class ] ]; // }
Method authenticated
Selain menggunakan event listener, kita juga bisa menggunakan method authenticated
pada class LoginController. Method authenticated
ini akan selalu dieksekusi ketika user login ke aplikasi.
protected function authenticated(Request $request, $user) { $user->forceFill([ 'last_login_at' => Carbon::now()->toDateTimeString(), 'last_login_ip' => $request->getClientIp() ])->save(); }
Dengan kode diatas, setiap kali user login ke aplikasi, kita akan menyimpan tanggal login dan ip address dari pengguna seperti terlihat pada gambar dibawah ini.

No Comments
Leave a comment Cancel