From 16fa6d3f4e4c1145b29587d68429be2029d2b4ca Mon Sep 17 00:00:00 2001 From: boban Date: Wed, 29 Apr 2026 19:05:49 +0200 Subject: [PATCH] Fix: Fehlerseiten als individuelle Dateien (4xx-Catch-all Laravel-Bug umgangen) --- resources/views/errors/400.blade.php | 7 + resources/views/errors/401.blade.php | 7 + resources/views/errors/403.blade.php | 7 + resources/views/errors/404.blade.php | 7 + resources/views/errors/405.blade.php | 7 + resources/views/errors/419.blade.php | 7 + resources/views/errors/422.blade.php | 7 + resources/views/errors/429.blade.php | 7 + resources/views/errors/4xx.blade.php | 134 ------------------ resources/views/errors/500.blade.php | 7 + resources/views/errors/502.blade.php | 7 + resources/views/errors/504.blade.php | 7 + .../errors/{5xx.blade.php => _base.blade.php} | 80 +++++------ 13 files changed, 114 insertions(+), 177 deletions(-) create mode 100644 resources/views/errors/400.blade.php create mode 100644 resources/views/errors/401.blade.php create mode 100644 resources/views/errors/403.blade.php create mode 100644 resources/views/errors/404.blade.php create mode 100644 resources/views/errors/405.blade.php create mode 100644 resources/views/errors/419.blade.php create mode 100644 resources/views/errors/422.blade.php create mode 100644 resources/views/errors/429.blade.php delete mode 100644 resources/views/errors/4xx.blade.php create mode 100644 resources/views/errors/500.blade.php create mode 100644 resources/views/errors/502.blade.php create mode 100644 resources/views/errors/504.blade.php rename resources/views/errors/{5xx.blade.php => _base.blade.php} (58%) diff --git a/resources/views/errors/400.blade.php b/resources/views/errors/400.blade.php new file mode 100644 index 0000000..1cee607 --- /dev/null +++ b/resources/views/errors/400.blade.php @@ -0,0 +1,7 @@ +@include('errors._base', [ + 'code' => 400, + 'type' => 'client', + 'title' => 'Ungültige Anfrage', + 'desc' => 'Die Anfrage enthält fehlerhafte oder unvollständige Daten.', + 'icon' => '', +]) diff --git a/resources/views/errors/401.blade.php b/resources/views/errors/401.blade.php new file mode 100644 index 0000000..68a5dbb --- /dev/null +++ b/resources/views/errors/401.blade.php @@ -0,0 +1,7 @@ +@include('errors._base', [ + 'code' => 401, + 'type' => 'client', + 'title' => 'Nicht angemeldet', + 'desc' => 'Bitte melde dich an, um auf diese Seite zuzugreifen.', + 'icon' => '', +]) diff --git a/resources/views/errors/403.blade.php b/resources/views/errors/403.blade.php new file mode 100644 index 0000000..630b5b0 --- /dev/null +++ b/resources/views/errors/403.blade.php @@ -0,0 +1,7 @@ +@include('errors._base', [ + 'code' => 403, + 'type' => 'client', + 'title' => 'Kein Zugriff', + 'desc' => 'Du hast keine Berechtigung, diese Seite aufzurufen.', + 'icon' => '', +]) diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php new file mode 100644 index 0000000..bc1763f --- /dev/null +++ b/resources/views/errors/404.blade.php @@ -0,0 +1,7 @@ +@include('errors._base', [ + 'code' => 404, + 'type' => 'client', + 'title' => 'Seite nicht gefunden', + 'desc' => 'Die aufgerufene Seite existiert nicht oder wurde verschoben.', + 'icon' => '', +]) diff --git a/resources/views/errors/405.blade.php b/resources/views/errors/405.blade.php new file mode 100644 index 0000000..d6452da --- /dev/null +++ b/resources/views/errors/405.blade.php @@ -0,0 +1,7 @@ +@include('errors._base', [ + 'code' => 405, + 'type' => 'client', + 'title' => 'Methode nicht erlaubt', + 'desc' => 'Diese HTTP-Methode ist für die aufgerufene URL nicht zulässig.', + 'icon' => '', +]) diff --git a/resources/views/errors/419.blade.php b/resources/views/errors/419.blade.php new file mode 100644 index 0000000..b34ffb8 --- /dev/null +++ b/resources/views/errors/419.blade.php @@ -0,0 +1,7 @@ +@include('errors._base', [ + 'code' => 419, + 'type' => 'client', + 'title' => 'Sitzung abgelaufen', + 'desc' => 'Deine Sitzung ist abgelaufen. Lade die Seite neu und versuche es erneut.', + 'icon' => '', +]) diff --git a/resources/views/errors/422.blade.php b/resources/views/errors/422.blade.php new file mode 100644 index 0000000..bcc0473 --- /dev/null +++ b/resources/views/errors/422.blade.php @@ -0,0 +1,7 @@ +@include('errors._base', [ + 'code' => 422, + 'type' => 'client', + 'title' => 'Ungültige Eingabe', + 'desc' => 'Die übermittelten Daten konnten nicht verarbeitet werden.', + 'icon' => '', +]) diff --git a/resources/views/errors/429.blade.php b/resources/views/errors/429.blade.php new file mode 100644 index 0000000..e463bb2 --- /dev/null +++ b/resources/views/errors/429.blade.php @@ -0,0 +1,7 @@ +@include('errors._base', [ + 'code' => 429, + 'type' => 'client', + 'title' => 'Zu viele Anfragen', + 'desc' => 'Du hast das Anfrage-Limit erreicht. Bitte warte einen Moment.', + 'icon' => '', +]) diff --git a/resources/views/errors/4xx.blade.php b/resources/views/errors/4xx.blade.php deleted file mode 100644 index 1c05fe2..0000000 --- a/resources/views/errors/4xx.blade.php +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -getStatusCode(); -$map = [ - 400 => ['Ungültige Anfrage', 'Die Anfrage enthält fehlerhafte oder unvollständige Daten.'], - 401 => ['Nicht angemeldet', 'Bitte melde dich an, um auf diese Seite zuzugreifen.'], - 403 => ['Kein Zugriff', 'Du hast keine Berechtigung, diese Seite aufzurufen.'], - 404 => ['Seite nicht gefunden', 'Die aufgerufene Seite existiert nicht oder wurde verschoben.'], - 405 => ['Methode nicht erlaubt', 'Diese HTTP-Methode ist für diese URL nicht zulässig.'], - 419 => ['Sitzung abgelaufen', 'Deine Sitzung ist abgelaufen. Lade die Seite neu und versuche es erneut.'], - 422 => ['Ungültige Eingabe', 'Die übermittelten Daten konnten nicht verarbeitet werden.'], - 429 => ['Zu viele Anfragen', 'Du hast das Anfrage-Limit erreicht. Bitte warte einen Moment.'], -]; -[$title, $desc] = $map[$code] ?? ['Fehler ' . $code, 'Ein unbekannter Fehler ist aufgetreten.']; -$backUrl = $_SERVER['HTTP_REFERER'] ?? '/'; -$iconPath = [ - 400 => 'M12 9v4m0 4h.01M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z', - 401 => 'M12 15v2m0 0v2m0-2h2m-2 0H10m2-9V6a4 4 0 0 0-8 0v4h1a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h1M8 10h8a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2z', - 403 => 'M18.364 18.364A9 9 0 0 0 5.636 5.636m12.728 12.728A9 9 0 0 1 5.636 5.636m12.728 12.728L5.636 5.636', - 404 => 'M9.172 16.172a4 4 0 0 1 5.656 0M9 10h.01M15 10h.01M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0z', - 405 => 'M18.364 18.364A9 9 0 0 0 5.636 5.636m12.728 12.728A9 9 0 0 1 5.636 5.636m12.728 12.728L5.636 5.636', - 419 => 'M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z', - 422 => 'M12 9v4m0 4h.01M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z', - 429 => 'M13 10V3L4 14h7v7l9-11h-7z', -]; -$icon = $iconPath[$code] ?? $iconPath[400]; -?> -{{ $code }} · CluBird - - - -
- - -
- -
- -
{{ $code }}
-

{{ $title }}

-

{{ $desc }}

-
- - - - Zurück - - - - Startseite - -
- - diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php new file mode 100644 index 0000000..cc54257 --- /dev/null +++ b/resources/views/errors/500.blade.php @@ -0,0 +1,7 @@ +@include('errors._base', [ + 'code' => 500, + 'type' => 'server', + 'title' => 'Serverfehler', + 'desc' => 'Ein interner Fehler ist aufgetreten. Wir wurden benachrichtigt.', + 'icon' => '', +]) diff --git a/resources/views/errors/502.blade.php b/resources/views/errors/502.blade.php new file mode 100644 index 0000000..f6e82bd --- /dev/null +++ b/resources/views/errors/502.blade.php @@ -0,0 +1,7 @@ +@include('errors._base', [ + 'code' => 502, + 'type' => 'server', + 'title' => 'Bad Gateway', + 'desc' => 'Der Server hat eine ungültige Antwort erhalten. Bitte versuche es gleich erneut.', + 'icon' => '', +]) diff --git a/resources/views/errors/504.blade.php b/resources/views/errors/504.blade.php new file mode 100644 index 0000000..49c15ac --- /dev/null +++ b/resources/views/errors/504.blade.php @@ -0,0 +1,7 @@ +@include('errors._base', [ + 'code' => 504, + 'type' => 'server', + 'title' => 'Gateway-Timeout', + 'desc' => 'Der Server antwortet nicht rechtzeitig. Bitte versuche es in Kürze erneut.', + 'icon' => '', +]) diff --git a/resources/views/errors/5xx.blade.php b/resources/views/errors/_base.blade.php similarity index 58% rename from resources/views/errors/5xx.blade.php rename to resources/views/errors/_base.blade.php index 2ea6296..88f3b48 100644 --- a/resources/views/errors/5xx.blade.php +++ b/resources/views/errors/_base.blade.php @@ -3,15 +3,6 @@ -getStatusCode(); -$map = [ - 500 => ['Serverfehler', 'Ein interner Fehler ist aufgetreten. Wir wurden benachrichtigt.'], - 502 => ['Bad Gateway', 'Der Server hat eine ungültige Antwort erhalten. Bitte versuche es gleich erneut.'], - 504 => ['Gateway-Timeout', 'Der Server antwortet nicht rechtzeitig. Bitte versuche es in Kürze erneut.'], -]; -[$title, $desc] = $map[$code] ?? ['Serverfehler ' . $code, 'Ein unerwarteter Fehler ist aufgetreten.']; -?> {{ $code }} · CluBird @@ -96,11 +87,7 @@ $map = [
- @if($code === 502 || $code === 504) - - @else - - @endif + {!! $icon !!}
{{ $code }}
@@ -108,11 +95,18 @@ $map = [

{{ $desc }}


- - - Neu laden - - + @if($type === 'server') + + + Neu laden + + @else + + + Zurück + + @endif + Startseite