Memanfaatkan Filter Untuk Mencatat Aktivitas User Di Codeigniter 4
By Harjito
Memanfaatkan Filter Untuk Mencatat Aktivitas User Di Codeigniter 4
Sebuah aplikasi yang baik harus menyediakan data untuk membantu administrator sistem melakukan inspeksi terhadap aktivitas pengguna. Seringkali pengguna melakukan sesuatu yang merugikan dirinya sendiri atau pengguna lain atau bahkan merugikan sistem secara keseluruhan karena melakukan aktivitas yang bersifat merusak. Baik secara sengaja maupun tidak. Melalui data log aktivitas, administrator dapat menelusuri aktivitas tersebut mulai dari siapa yang melakukan, kapan dilakukan dan apa yang dilakukan. Melalui log tersebut kerusakan dapat diperbaiki dan menghukum pihak yang bersalah.
Dalam tutorial kali ini, saya akan membagikan seuah tips pencatatan aktivitas user di Framework CodeIgniter 4 dengan memanfaatkan filter. Mengapa saya pilih filter, karena melalui filter, kita bisa mengatur aroute mana saaja yang akan dicatat aktivitasnya. Sehingga script yang kita bat lebih sederhana dan mudah diterapkan.
Tentunya, untuk memahami tutorial ini, kita harus sudah
- melakukan instalasi CodeIgniter 4
- sudah pernah mengggunakan Filter untuk otentikasi dan/atau otorisasi
Menyiapkan Script
- Buka file filter yang akan kita tambahkan log, misalkan app/Filters/Auth.php,
- Atau kita bisa membuat satu filter khusus untuk log app/Filters/Log.php
- Masuk pada method after
- Lakukan pengecekan session,
- Jika session user ada, ambil id user simpan dalam variabel array
- Ambil informasi route yang diakses pengguna, untuk mendapatkan informasi url apa yang diakses,
- Ambil informasi method yang dilakukan user
- Ambil informasi variabel global yang dikirim melalui method Get
- Ambil informasi variabel global yang dikirim melalui method Post
- Ambil informasi variabel global yang dikirim melalui method Ajax
- Gabungkan semua informasi tersebut dalam sebuah array
- Ubah menjadi data serial agar bisa disimpan dalam plaintext
- Simpan dalam folder writable/logs/activity/ dengan metode append secara harian, artinya satu file untuk menyimpan aktivitas 1 hari
Script selengkapnya dapat dilihat di bawah. Semoga bermanfaat.
function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
if(Session()->auth){
$param = [
'user_id' => Session()->auth['user_id'],
// mendapatkan data user_id
'time' => date('Y-m-d H:i:s),
// mendapatkan data waktu
'route' => implode('/', $request->uri->getSegments()),
// mendapatkan data url segment
'method' => $request->getMethod(),
// mendapatkan data method
'is_ajax' => $request->isAjax(),
// apakah menggunakan ajax
'data' => [],
// menyiapkan variabel penampung inputan data yang dikirim user
];
if($request->getPost()){
$param['data'][] = $request->getPost();
// mengambil semua data yang dikirim lewat $_POST
}
if(count($request->getGet())>0){
$param['data'][] = $request->getGet();
// mengambil semua data yang dikirim lewat $_GET
}
if($request->getVar()){
$param['data][] = $request->getVar();
// mengambil semua data yang dikirim lewat AJAX
}
$path = WRITEPATH .'logs/activity/';
if(!file_exists($path)){
mkdir(file_exists($path), 0755);
}
// menyiapkan direktory penyimpanan altivitas
$log = $path.date('Y-m-d).'.log';
// menyiapkan file log harian
file_put_contents($file, serialize($param)."\n", FILE_APPEND);
// menyimpan data aktivitas ke file log harian
}
}
Tags:
Ikuti terus tutorial saya di e-Project dan channel
saya di