Initial commit - CMS Gov Bapenda Garut dengan EditorJS
This commit is contained in:
94
app/Controllers/Admin/AuditLogs.php
Normal file
94
app/Controllers/Admin/AuditLogs.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controllers\Admin;
|
||||
|
||||
use App\Controllers\BaseController;
|
||||
use App\Models\AuditLogModel;
|
||||
use App\Models\UserModel;
|
||||
|
||||
class AuditLogs extends BaseController
|
||||
{
|
||||
protected $auditLogModel;
|
||||
protected $userModel;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->auditLogModel = new AuditLogModel();
|
||||
$this->userModel = new UserModel();
|
||||
}
|
||||
|
||||
/**
|
||||
* Display audit logs with pagination
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
// Check if user is admin
|
||||
if (session()->get('role') !== 'admin') {
|
||||
return redirect()->to('/admin/dashboard')
|
||||
->with('error', 'Anda tidak memiliki akses ke halaman ini.');
|
||||
}
|
||||
|
||||
// Get search query
|
||||
$search = $this->request->getGet('search');
|
||||
$actionFilter = $this->request->getGet('action');
|
||||
$userFilter = $this->request->getGet('user');
|
||||
|
||||
// Build query
|
||||
$this->auditLogModel->select('audit_logs.*, users.username, users.email')
|
||||
->join('users', 'users.id = audit_logs.user_id', 'left')
|
||||
->orderBy('audit_logs.created_at', 'DESC');
|
||||
|
||||
// Apply search filter
|
||||
if (!empty($search)) {
|
||||
$this->auditLogModel->groupStart()
|
||||
->like('audit_logs.action', $search)
|
||||
->orLike('users.username', $search)
|
||||
->orLike('users.email', $search)
|
||||
->orLike('audit_logs.ip_address', $search)
|
||||
->groupEnd();
|
||||
}
|
||||
|
||||
// Apply action filter
|
||||
if (!empty($actionFilter)) {
|
||||
$this->auditLogModel->where('audit_logs.action', $actionFilter);
|
||||
}
|
||||
|
||||
// Apply user filter
|
||||
if (!empty($userFilter)) {
|
||||
$this->auditLogModel->where('audit_logs.user_id', $userFilter);
|
||||
}
|
||||
|
||||
// Get paginated results
|
||||
$perPage = 20;
|
||||
$page = (int) ($this->request->getGet('page') ?? 1);
|
||||
$auditLogs = $this->auditLogModel->paginate($perPage, 'default', $page);
|
||||
$pager = $this->auditLogModel->pager;
|
||||
$total = $pager->getTotal();
|
||||
|
||||
// Get unique actions for filter dropdown
|
||||
$actions = $this->auditLogModel->select('action')
|
||||
->distinct()
|
||||
->orderBy('action', 'ASC')
|
||||
->findAll();
|
||||
|
||||
// Get users for filter dropdown
|
||||
$users = $this->userModel->select('id, username, email')
|
||||
->orderBy('username', 'ASC')
|
||||
->findAll();
|
||||
|
||||
$data = [
|
||||
'title' => 'Audit Log',
|
||||
'auditLogs' => $auditLogs,
|
||||
'pager' => $pager,
|
||||
'search' => $search,
|
||||
'actionFilter' => $actionFilter,
|
||||
'userFilter' => $userFilter,
|
||||
'actions' => $actions,
|
||||
'users' => $users,
|
||||
'total' => $total,
|
||||
];
|
||||
|
||||
return view('admin/audit-logs/index', $data);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user