From 0dd577e9d58e426d427a67fd3957a520e6e91de3 Mon Sep 17 00:00:00 2001 From: fsociety Date: Sun, 29 Sep 2024 19:51:13 +0200 Subject: [PATCH] feat: Add error handling for relay server response and custom error pages This commit includes the following changes: - Added error handling in the election views to check if the relay server responds with an error message - Included custom error pages for different HTTP status codes (401, 402, 403, 404, 419, 429, 500, 503) - Created a new layout for the error pages --- resources/views/errors/401.blade.php | 5 ++ resources/views/errors/402.blade.php | 5 ++ resources/views/errors/403.blade.php | 5 ++ resources/views/errors/404.blade.php | 5 ++ resources/views/errors/419.blade.php | 5 ++ resources/views/errors/429.blade.php | 5 ++ resources/views/errors/500.blade.php | 5 ++ resources/views/errors/503.blade.php | 5 ++ resources/views/errors/layout.blade.php | 53 +++++++++++++++++++ resources/views/errors/minimal.blade.php | 34 ++++++++++++ .../election/[Election:year].blade.php | 5 ++ .../election/admin/[Election:year].blade.php | 5 ++ 12 files changed, 137 insertions(+) create mode 100644 resources/views/errors/401.blade.php create mode 100644 resources/views/errors/402.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/419.blade.php create mode 100644 resources/views/errors/429.blade.php create mode 100644 resources/views/errors/500.blade.php create mode 100644 resources/views/errors/503.blade.php create mode 100644 resources/views/errors/layout.blade.php create mode 100644 resources/views/errors/minimal.blade.php diff --git a/resources/views/errors/401.blade.php b/resources/views/errors/401.blade.php new file mode 100644 index 0000000..5c586db --- /dev/null +++ b/resources/views/errors/401.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Unauthorized')) +@section('code', '401') +@section('message', __('Unauthorized')) diff --git a/resources/views/errors/402.blade.php b/resources/views/errors/402.blade.php new file mode 100644 index 0000000..3bc23ef --- /dev/null +++ b/resources/views/errors/402.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Payment Required')) +@section('code', '402') +@section('message', __('Payment Required')) diff --git a/resources/views/errors/403.blade.php b/resources/views/errors/403.blade.php new file mode 100644 index 0000000..a5506f0 --- /dev/null +++ b/resources/views/errors/403.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Forbidden')) +@section('code', '403') +@section('message', __($exception->getMessage() ?: 'Forbidden')) diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php new file mode 100644 index 0000000..7549540 --- /dev/null +++ b/resources/views/errors/404.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Not Found')) +@section('code', '404') +@section('message', __('Not Found')) diff --git a/resources/views/errors/419.blade.php b/resources/views/errors/419.blade.php new file mode 100644 index 0000000..c09216e --- /dev/null +++ b/resources/views/errors/419.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Page Expired')) +@section('code', '419') +@section('message', __('Page Expired')) diff --git a/resources/views/errors/429.blade.php b/resources/views/errors/429.blade.php new file mode 100644 index 0000000..f01b07b --- /dev/null +++ b/resources/views/errors/429.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Too Many Requests')) +@section('code', '429') +@section('message', __('Too Many Requests')) diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php new file mode 100644 index 0000000..03aaaaa --- /dev/null +++ b/resources/views/errors/500.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Server Error')) +@section('code', '500') +@section('message', __($exception->getMessage() ?: 'Server Error')) diff --git a/resources/views/errors/503.blade.php b/resources/views/errors/503.blade.php new file mode 100644 index 0000000..c5a9dde --- /dev/null +++ b/resources/views/errors/503.blade.php @@ -0,0 +1,5 @@ +@extends('errors::minimal') + +@section('title', __('Service Unavailable')) +@section('code', '503') +@section('message', __('Service Unavailable')) diff --git a/resources/views/errors/layout.blade.php b/resources/views/errors/layout.blade.php new file mode 100644 index 0000000..019c2cd --- /dev/null +++ b/resources/views/errors/layout.blade.php @@ -0,0 +1,53 @@ + + + + + + + @yield('title') + + + + + +
+
+
+ @yield('message') +
+
+
+ + diff --git a/resources/views/errors/minimal.blade.php b/resources/views/errors/minimal.blade.php new file mode 100644 index 0000000..db69f25 --- /dev/null +++ b/resources/views/errors/minimal.blade.php @@ -0,0 +1,34 @@ + + + + + + + @yield('title') + + + + + + +
+
+
+
+ @yield('code') +
+ +
+ @yield('message') +
+
+
+
+ + diff --git a/resources/views/pages/association/election/[Election:year].blade.php b/resources/views/pages/association/election/[Election:year].blade.php index 4327072..fde627b 100644 --- a/resources/views/pages/association/election/[Election:year].blade.php +++ b/resources/views/pages/association/election/[Election:year].blade.php @@ -94,6 +94,11 @@ $loadEvents = function () { $request = new Request($relaySet, $requestMessage); $response = $request->send(); + // Check for errors in the response + if (isset($response[config('services.relay')][0][0]) && $response[config('services.relay')][0][0] === 'ERROR') { + abort(500, 'Kann keine Events laden. Nostr Relay antwortet nicht.'); + } + $this->events = collect($response[config('services.relay')]) ->map(fn($event) => [ diff --git a/resources/views/pages/association/election/admin/[Election:year].blade.php b/resources/views/pages/association/election/admin/[Election:year].blade.php index 210ac4b..a4d09bf 100644 --- a/resources/views/pages/association/election/admin/[Election:year].blade.php +++ b/resources/views/pages/association/election/admin/[Election:year].blade.php @@ -134,6 +134,11 @@ $loadEvents = function () { $request = new Request($relaySet, $requestMessage); $response = $request->send(); + // Check for errors in the response + if (isset($response[config('services.relay')][0][0]) && $response[config('services.relay')][0][0] === 'ERROR') { + abort(500, 'Kann keine Events laden. Nostr Relay antwortet nicht.'); + } + $this->events = collect($response[config('services.relay')]) ->map(fn($event) => [