39 lines
1.1 KiB
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);
|
|
}
|
|
}
|