@php $siteName = getSetting('web_name', config('app.name')); $siteLogo = (string) getSetting('logo', ''); $siteLogoUrl = $siteLogo !== '' ? po_asset($siteLogo) : null; $status = (int) ($status ?? 500); $context = ($context ?? 'frontend') === 'backend' ? 'backend' : 'frontend'; $isBackend = $context === 'backend'; $pages = [ 403 => [ 'title' => 'Akses Ditolak', 'headline' => 'Anda tidak memiliki izin untuk membuka halaman ini.', 'description' => 'Pastikan akun Anda memiliki hak akses yang sesuai atau kembali ke halaman yang diizinkan.', 'label' => 'Forbidden', ], 404 => [ 'title' => 'Halaman Tidak Ditemukan', 'headline' => '404', 'description' => 'Halaman Tidak Ditemukan', 'label' => 'Not Found', ], 419 => [ 'title' => 'Sesi Berakhir', 'headline' => 'Sesi keamanan Anda telah kedaluwarsa.', 'description' => 'Silakan muat ulang halaman atau ulangi proses dari awal untuk mendapatkan sesi baru.', 'label' => 'Session Expired', ], 429 => [ 'title' => 'Terlalu Banyak Permintaan', 'headline' => 'Permintaan dikirim terlalu cepat dalam waktu singkat.', 'description' => 'Tunggu beberapa saat lalu coba lagi agar sistem dapat memproses permintaan dengan stabil.', 'label' => 'Too Many Requests', ], 500 => [ 'title' => 'Terjadi Gangguan Sistem', 'headline' => 'Sistem sedang mengalami kendala internal.', 'description' => 'Tim kami dapat memeriksa masalah ini. Silakan coba lagi beberapa saat lagi.', 'label' => 'Server Error', ], 503 => [ 'title' => 'Layanan Sementara Tidak Tersedia', 'headline' => 'Sistem sedang dalam proses pemeliharaan atau penyesuaian.', 'description' => 'Silakan kembali beberapa saat lagi. Layanan akan segera tersedia kembali.', 'label' => 'Service Unavailable', ], ]; $page = $pages[$status] ?? $pages[500]; $homeUrl = route('home'); $contactUrl = route('contact'); $loginUrl = route('login'); $dashboardUrl = route('dashboard'); $primaryUrl = $isBackend ? (auth()->check() ? $dashboardUrl : $loginUrl) : $homeUrl; $primaryLabel = $isBackend ? (auth()->check() ? 'Kembali ke Dashboard' : 'Masuk ke Admin') : 'Kembali ke Beranda'; $secondaryUrl = $isBackend ? $homeUrl : $contactUrl; $secondaryLabel = $isBackend ? 'Buka Situs Utama' : 'Hubungi Kami'; $showRefresh = in_array($status, [419, 429, 500, 503], true); $statusGlyph = match ($status) { 403 => '!', 404 => '?', 419 => 'S', 429 => '!', 503 => '~', default => '*', }; $statusTone = match ($status) { 403 => 'Akses terbatas', 404 => 'Rute tidak ditemukan', 419 => 'Sesi perlu diperbarui', 429 => 'Beban permintaan tinggi', 503 => 'Layanan sedang dipersiapkan', default => 'Sistem perlu dipulihkan', }; @endphp {{ $status }} - {{ $page['title'] }} | {{ $siteName }}
{{ $status }}
@if ($isBackend) @if ($siteLogoUrl) {{ $siteName }} @endif {{ $siteName }}
Admin Error Handler {{ $page['label'] }}
@elseif ($siteLogoUrl) {{ $siteName }} @endif

{{ $page['headline'] }}

{{ $page['description'] }}

{{ $statusGlyph }} {{ $statusTone }} @if ($isBackend && auth()->check()) A Admin aktif terdeteksi @endif @if (! $isBackend) W Web publik tetap aman @endif
{{ $page['title'] }} {{ $isBackend ? 'Secure Admin Layer' : 'Public Experience Layer' }}
@if ($status !== 404)
{{ $status }}

{{ $page['title'] }}

{{ $isBackend ? 'Panel administrasi tetap terlindungi. Gunakan navigasi aman untuk kembali ke area kerja yang valid.' : 'Pengalaman pengguna tetap dijaga dengan tampilan error yang jelas, rapi, dan mudah dipahami.' }}

@endif