si-klinik/sk-klinik.my.id/app/Http/Middleware/CheckMaintenanceMode.php

39 lines
1.1 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CheckMaintenanceMode
{
/**
* Handle an incoming request.
*
* @param Closure(Request): (Response) $next
*/
public function handle(Request $request, Closure $next)
{
$isMaintenance = \App\Models\Setting::get('maintenance_mode');
if ($isMaintenance === 'true') {
// Pengecekan agar Admin tidak terkunci (lockout)
// Jika user adalah admin, biarkan mereka lewat
if (auth()->check() && auth()->user()->hasRole('admin')) {
return $next($request);
}
// Izinkan akses ke halaman login agar admin bisa masuk untuk mematikan mode maintenance
if ($request->is('login') || $request->is('livewire*')) {
return $next($request);
}
// Tampilkan halaman maintenance
return response()->view('errors.maintenance', [], 503);
}
return $next($request);
}
}