Files
expense/app/Helpers/AuditTrailHelper.php
T
root 1c1418f3e0
Deploy to VPS (PAT over HTTPS) / deploy (push) Has been cancelled
Initial commit - expense
2026-06-01 15:01:03 +07:00

62 lines
2.0 KiB
PHP

<?php
namespace App\Helpers;
use Illuminate\Support\Facades\Auth;
use App\Models\AuditTrail;
use Illuminate\Support\Facades\Request;
class AuditTrailHelper
{
/**
* Mencatat aktivitas umum (Insert, Update, Delete, Approve, Reject)
*/
public static function AddAuditTrail($action, $activity)
{
// Menggunakan guard 'admin' sesuai spesifikasi login aplikasi Anda
$user = Auth::guard('admin')->user();
$audit = new AuditTrail();
$audit->user_id = $user ? $user->id : null;
$audit->ip_address = Request::ip();
$audit->activity = $activity;
$audit->action = $action;
$audit->user_agent = Request::userAgent();
$audit->browser = self::getBrowserName(Request::userAgent());
$audit->save();
}
/**
* Mencatat percobaan otentikasi (Login/Logout)
*/
public static function AuthAttempt($action, $activity)
{
$audit = new AuditTrail();
$audit->user_id = Auth::guard('admin')->id(); // Tetap coba ambil ID jika ada (misal saat logout)
$audit->ip_address = Request::ip();
$audit->activity = $activity;
$audit->action = $action;
$audit->user_agent = Request::userAgent();
$audit->browser = self::getBrowserName(Request::userAgent());
$audit->save();
}
/**
* Helper internal untuk deteksi browser yang lebih bersih
*/
private static function getBrowserName($userAgent)
{
if (!$userAgent) return 'Unknown';
if (strpos($userAgent, 'Opera') || strpos($userAgent, 'OPR')) return 'Opera';
if (strpos($userAgent, 'Edge')) return 'Edge';
if (strpos($userAgent, 'Chrome')) return 'Chrome';
if (strpos($userAgent, 'Safari')) return 'Safari';
if (strpos($userAgent, 'Firefox')) return 'Firefox';
if (strpos($userAgent, 'MSIE') || strpos($userAgent, 'Trident/7')) return 'Internet Explorer';
return explode('/', $userAgent)[0] ?? 'Unknown';
}
}