diff --git a/app/Http/Controllers/AssetMaintenanceController.php b/app/Http/Controllers/AssetMaintenanceController.php index 14db406..28a2847 100644 --- a/app/Http/Controllers/AssetMaintenanceController.php +++ b/app/Http/Controllers/AssetMaintenanceController.php @@ -12,7 +12,7 @@ class AssetMaintenanceController extends Controller { public function index(): View { - $maintenances = AssetMaintenance::with('asset')->latest()->paginate(20); + $maintenances = AssetMaintenance::with('asset')->latest()->paginate(config('system.ui.table_page_size', 20)); $assets = Asset::orderBy('code')->get(); return view('assets.maintenances', compact('maintenances', 'assets')); diff --git a/app/Http/Middleware/MaintenanceReadOnly.php b/app/Http/Middleware/MaintenanceReadOnly.php new file mode 100644 index 0000000..9e8aee2 --- /dev/null +++ b/app/Http/Middleware/MaintenanceReadOnly.php @@ -0,0 +1,19 @@ +isMethodSafe()) { + return redirect()->back()->withErrors(['readonly' => 'Sistem sedang dalam mode read-only (maintenance).']); + } + + return $next($request); + } +} diff --git a/app/Services/Logging/ActivityLogger.php b/app/Services/Logging/ActivityLogger.php index 7322950..cb274bd 100644 --- a/app/Services/Logging/ActivityLogger.php +++ b/app/Services/Logging/ActivityLogger.php @@ -27,6 +27,10 @@ class ActivityLogger */ public function log(string $message, array $context = [], string $level = 'info'): void { + if (! config('system.security.audit_log', true)) { + return; + } + $request = request(); $payload = array_merge([ @@ -48,6 +52,10 @@ class ActivityLogger */ public function logHttp(string $action, Request $request, mixed $response = null, array $context = [], string $level = 'info'): void { + if (! config('system.security.audit_log', true)) { + return; + } + $payload = [ 'action' => $action, 'actor_id' => optional(auth()->user())->getAuthIdentifier(), diff --git a/bootstrap/app.php b/bootstrap/app.php index e0f21c0..3cf82f2 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -6,6 +6,7 @@ use Illuminate\Foundation\Configuration\Middleware; use Spatie\Permission\Middleware\PermissionMiddleware; use Spatie\Permission\Middleware\RoleMiddleware; use Spatie\Permission\Middleware\RoleOrPermissionMiddleware; +use App\Http\Middleware\MaintenanceReadOnly; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( @@ -18,6 +19,7 @@ return Application::configure(basePath: dirname(__DIR__)) 'role' => RoleMiddleware::class, 'permission' => PermissionMiddleware::class, 'role_or_permission' => RoleOrPermissionMiddleware::class, + 'maintenance.readonly' => MaintenanceReadOnly::class, ]); }) ->withExceptions(function (Exceptions $exceptions) { diff --git a/routes/web.php b/routes/web.php index ee71979..e04c922 100644 --- a/routes/web.php +++ b/routes/web.php @@ -31,7 +31,7 @@ Route::view('/', 'pages.landing.index')->name('landing'); Route::view('/landing', 'pages.landing.index'); Route::get('asset-view/{asset}', [PublicAssetController::class, 'show'])->name('assets.public.show'); -Route::middleware('auth')->prefix('dashboard')->group(function () { +Route::middleware(['auth','maintenance.readonly'])->prefix('dashboard')->group(function () { Route::get('index', [DashboardsController::class, 'index'])->name('index'); Route::resource('settings', SystemSettingController::class)->only(['index', 'store', 'update', 'destroy'])