From 439db22f08ff2b46d4e2a013bf1b6a0a048fdf0b Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Sun, 19 Oct 2025 23:10:50 +0200 Subject: [PATCH 1/8] improved error handeling --- app/controllers/errors_controller.rb | 11 ++--- public/403.html | 67 ++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 public/403.html diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb index 4fa4b1e56..03304693b 100644 --- a/app/controllers/errors_controller.rb +++ b/app/controllers/errors_controller.rb @@ -1,17 +1,18 @@ class ErrorsController < ApplicationController + def forbidden - render status: :forbidden + render file: Rails.root.join('public', '403.html'), layout: false, status: :forbidden end def not_found - render status: :not_found + render file: Rails.root.join('public', '404.html'), layout: false, status: :not_found end def unacceptable - render status: :unprocessable_content + render file: Rails.root.join('public', '422.html'), layout: false, status: :unprocessable_entity end def internal_server_error - render status: :internal_server_error + render file: Rails.root.join('public', '500.html'), layout: false, status: :internal_server_error end -end +end \ No newline at end of file diff --git a/public/403.html b/public/403.html new file mode 100644 index 000000000..ce4e09aad --- /dev/null +++ b/public/403.html @@ -0,0 +1,67 @@ + + + + You don't have permission to view this page (403) + + + + + + +
+
+

You don't have permission to view this page.

+

You may have tried to access a page that you do not have permission to view.

+
+

If you are the application owner check the logs for more information.

+
+ + \ No newline at end of file From caf808a6a3307f1d10bd303ab18cc6ad6d552621 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Sun, 19 Oct 2025 23:36:38 +0200 Subject: [PATCH 2/8] The last update made it static this looks better --- app/controllers/errors_controller.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb index 03304693b..96b14aa91 100644 --- a/app/controllers/errors_controller.rb +++ b/app/controllers/errors_controller.rb @@ -1,18 +1,19 @@ class ErrorsController < ApplicationController + layout "application" def forbidden - render file: Rails.root.join('public', '403.html'), layout: false, status: :forbidden + render template: 'errors/forbidden', status: :forbidden end def not_found - render file: Rails.root.join('public', '404.html'), layout: false, status: :not_found + render template: 'errors/not_found', status: :not_found end def unacceptable - render file: Rails.root.join('public', '422.html'), layout: false, status: :unprocessable_entity + render template: 'errors/unacceptable', status: :unprocessable_entity end def internal_server_error - render file: Rails.root.join('public', '500.html'), layout: false, status: :internal_server_error + render template: 'errors/internal_server_error', status: :internal_server_error end end \ No newline at end of file From dce8de7f5d0bdd63457c67cce45e7c16b9f6ff21 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Sun, 19 Oct 2025 23:38:20 +0200 Subject: [PATCH 3/8] delete static error pages --- public/403.html | 67 ----------------------------- public/404.html | 67 ----------------------------- public/406-unsupported-browser.html | 66 ---------------------------- public/422.html | 67 ----------------------------- public/500.html | 66 ---------------------------- 5 files changed, 333 deletions(-) delete mode 100644 public/403.html delete mode 100644 public/404.html delete mode 100644 public/406-unsupported-browser.html delete mode 100644 public/422.html delete mode 100644 public/500.html diff --git a/public/403.html b/public/403.html deleted file mode 100644 index ce4e09aad..000000000 --- a/public/403.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - You don't have permission to view this page (403) - - - - - - -
-
-

You don't have permission to view this page.

-

You may have tried to access a page that you do not have permission to view.

-
-

If you are the application owner check the logs for more information.

-
- - \ No newline at end of file diff --git a/public/404.html b/public/404.html deleted file mode 100644 index 2be3af26f..000000000 --- a/public/404.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - The page you were looking for doesn't exist (404) - - - - - - -
-
-

The page you were looking for doesn't exist.

-

You may have mistyped the address or the page may have moved.

-
-

If you are the application owner check the logs for more information.

-
- - diff --git a/public/406-unsupported-browser.html b/public/406-unsupported-browser.html deleted file mode 100644 index 7cf1e168e..000000000 --- a/public/406-unsupported-browser.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - Your browser is not supported (406) - - - - - - -
-
-

Your browser is not supported.

-

Please upgrade your browser to continue.

-
-
- - diff --git a/public/422.html b/public/422.html deleted file mode 100644 index c08eac0d1..000000000 --- a/public/422.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - The change you wanted was rejected (422) - - - - - - -
-
-

The change you wanted was rejected.

-

Maybe you tried to change something you didn't have access to.

-
-

If you are the application owner check the logs for more information.

-
- - diff --git a/public/500.html b/public/500.html deleted file mode 100644 index 78a030af2..000000000 --- a/public/500.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - We're sorry, but something went wrong (500) - - - - - - -
-
-

We're sorry, but something went wrong.

-
-

If you are the application owner check the logs for more information.

-
- - From 708d6d5eeff7c40577e4a6630dfc787ac6227b62 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Sun, 19 Oct 2025 23:44:14 +0200 Subject: [PATCH 4/8] fix lint --- app/controllers/errors_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb index 96b14aa91..462f2bc1c 100644 --- a/app/controllers/errors_controller.rb +++ b/app/controllers/errors_controller.rb @@ -1,5 +1,5 @@ class ErrorsController < ApplicationController - layout "application" + layout 'application' def forbidden render template: 'errors/forbidden', status: :forbidden @@ -16,4 +16,4 @@ def unacceptable def internal_server_error render template: 'errors/internal_server_error', status: :internal_server_error end -end \ No newline at end of file +end From 452d5e1754ee68ed15ba6afc2edf3254e1658653 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Mon, 20 Oct 2025 00:11:46 +0200 Subject: [PATCH 5/8] improve the error handling in the error controller --- app/controllers/errors_controller.rb | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb index 462f2bc1c..3b59f72ef 100644 --- a/app/controllers/errors_controller.rb +++ b/app/controllers/errors_controller.rb @@ -1,19 +1,31 @@ class ErrorsController < ApplicationController - layout 'application' + layout 'errors' - def forbidden + def forbidden render template: 'errors/forbidden', status: :forbidden + rescue StandardError => e + Rails.logger.error("Error rendering forbidden page: #{e.message}") + render plain: "403 Forbidden", status: :forbidden end def not_found render template: 'errors/not_found', status: :not_found + rescue StandardError => e + Rails.logger.error("Error rendering not_found page: #{e.message}") + render plain: "404 Not Found", status: :not_found end def unacceptable - render template: 'errors/unacceptable', status: :unprocessable_entity + render template: 'errors/unacceptable', status: :not_acceptable + rescue StandardError => e + Rails.logger.error("Error rendering unacceptable page: #{e.message}") + render plain: "406 Not Acceptable", status: :not_acceptable end def internal_server_error render template: 'errors/internal_server_error', status: :internal_server_error + rescue StandardError => e + Rails.logger.error("Error rendering internal_server_error page: #{e.message}") + render plain: "500 Internal Server Error", status: :internal_server_error end end From 3b453d19465ce435f1f7c3421b79fc5caf855f09 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Mon, 20 Oct 2025 00:12:37 +0200 Subject: [PATCH 6/8] fix lint --- app/controllers/errors_controller.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb index 3b59f72ef..52728623f 100644 --- a/app/controllers/errors_controller.rb +++ b/app/controllers/errors_controller.rb @@ -1,31 +1,31 @@ class ErrorsController < ApplicationController layout 'errors' - def forbidden + def forbidden render template: 'errors/forbidden', status: :forbidden rescue StandardError => e Rails.logger.error("Error rendering forbidden page: #{e.message}") - render plain: "403 Forbidden", status: :forbidden + render plain: '403 Forbidden', status: :forbidden end def not_found render template: 'errors/not_found', status: :not_found rescue StandardError => e Rails.logger.error("Error rendering not_found page: #{e.message}") - render plain: "404 Not Found", status: :not_found + render plain: '404 Not Found', status: :not_found end def unacceptable render template: 'errors/unacceptable', status: :not_acceptable rescue StandardError => e Rails.logger.error("Error rendering unacceptable page: #{e.message}") - render plain: "406 Not Acceptable", status: :not_acceptable + render plain: '406 Not Acceptable', status: :not_acceptable end def internal_server_error render template: 'errors/internal_server_error', status: :internal_server_error rescue StandardError => e Rails.logger.error("Error rendering internal_server_error page: #{e.message}") - render plain: "500 Internal Server Error", status: :internal_server_error + render plain: '500 Internal Server Error', status: :internal_server_error end end From dbd7e62ad205960ab68082c6abaaf51e8a66e0f8 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Mon, 20 Oct 2025 00:20:33 +0200 Subject: [PATCH 7/8] added dedicated 422 unprocessable entity error pag --- app/controllers/errors_controller.rb | 9 ++++++++- app/views/errors/unprocessable_entity.html.erb | 4 ++++ config/routes.rb | 3 ++- 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 app/views/errors/unprocessable_entity.html.erb diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb index 52728623f..4dda1745a 100644 --- a/app/controllers/errors_controller.rb +++ b/app/controllers/errors_controller.rb @@ -22,10 +22,17 @@ def unacceptable render plain: '406 Not Acceptable', status: :not_acceptable end + def unprocessable_entity + render template: 'errors/unprocessable_entity', status: :unprocessable_entity + rescue StandardError => e + Rails.logger.error("Error rendering unprocessable_entity page: #{e.message}") + render plain: '422 Unprocessable Entity', status: :unprocessable_entity + end + def internal_server_error render template: 'errors/internal_server_error', status: :internal_server_error rescue StandardError => e Rails.logger.error("Error rendering internal_server_error page: #{e.message}") render plain: '500 Internal Server Error', status: :internal_server_error end -end +end \ No newline at end of file diff --git a/app/views/errors/unprocessable_entity.html.erb b/app/views/errors/unprocessable_entity.html.erb new file mode 100644 index 000000000..bd590af6e --- /dev/null +++ b/app/views/errors/unprocessable_entity.html.erb @@ -0,0 +1,4 @@ +<% content_for :title, "unprocessable_entity (422) - #{Rails.application.config.x.site_name}" %> +

unprocessable_entity (422)

+

Je verzoek kon niet worden verwerkt. Dit komt meestal door ongeldige gegevens.

+

Controleer je invoer en probeer het opnieuw. Stuur een <%= link_to 'mailtje', "mailto:#{Rails.application.config.x.admin_email}" %> naar de ICT-commissie als dit probleem blijft optreden.

\ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 8838a243c..38875038f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -65,6 +65,7 @@ get '/403', to: 'errors#forbidden' get '/404', to: 'errors#not_found' - get '/422', to: 'errors#unacceptable' + get '/406', to: 'errors#unacceptable' + get '/422', to: 'errors#unprocessable_entity' get '/500', to: 'errors#internal_server_error' end From f58f7e1bfe6da6249ebb73b354a170871b497304 Mon Sep 17 00:00:00 2001 From: Lodewiges Date: Mon, 20 Oct 2025 00:44:21 +0200 Subject: [PATCH 8/8] fixed lint and used dutch language for error page --- app/controllers/errors_controller.rb | 36 +++++++++---------- .../errors/unprocessable_entity.html.erb | 4 +-- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/app/controllers/errors_controller.rb b/app/controllers/errors_controller.rb index 4dda1745a..d82ca2e85 100644 --- a/app/controllers/errors_controller.rb +++ b/app/controllers/errors_controller.rb @@ -1,38 +1,34 @@ class ErrorsController < ApplicationController layout 'errors' + rescue_from StandardError, with: :handle_rendering_error + def forbidden - render template: 'errors/forbidden', status: :forbidden - rescue StandardError => e - Rails.logger.error("Error rendering forbidden page: #{e.message}") - render plain: '403 Forbidden', status: :forbidden + render_error_page('errors/forbidden', :forbidden, '403 Forbidden') end def not_found - render template: 'errors/not_found', status: :not_found - rescue StandardError => e - Rails.logger.error("Error rendering not_found page: #{e.message}") - render plain: '404 Not Found', status: :not_found + render_error_page('errors/not_found', :not_found, '404 Not Found') end def unacceptable - render template: 'errors/unacceptable', status: :not_acceptable - rescue StandardError => e - Rails.logger.error("Error rendering unacceptable page: #{e.message}") - render plain: '406 Not Acceptable', status: :not_acceptable + render_error_page('errors/unacceptable', :not_acceptable, '406 Not Acceptable') end def unprocessable_entity - render template: 'errors/unprocessable_entity', status: :unprocessable_entity - rescue StandardError => e - Rails.logger.error("Error rendering unprocessable_entity page: #{e.message}") - render plain: '422 Unprocessable Entity', status: :unprocessable_entity + render_error_page('errors/unprocessable_entity', :unprocessable_entity, '422 Unprocessable Entity') end def internal_server_error - render template: 'errors/internal_server_error', status: :internal_server_error + render_error_page('errors/internal_server_error', :internal_server_error, '500 Internal Server Error') + end + + private + + def render_error_page(template, status, fallback_message) + render template: template, status: status rescue StandardError => e - Rails.logger.error("Error rendering internal_server_error page: #{e.message}") - render plain: '500 Internal Server Error', status: :internal_server_error + Rails.logger.error("Error rendering #{status} page: #{e.message}") + render plain: fallback_message, status: status end -end \ No newline at end of file +end diff --git a/app/views/errors/unprocessable_entity.html.erb b/app/views/errors/unprocessable_entity.html.erb index bd590af6e..811011cb7 100644 --- a/app/views/errors/unprocessable_entity.html.erb +++ b/app/views/errors/unprocessable_entity.html.erb @@ -1,4 +1,4 @@ -<% content_for :title, "unprocessable_entity (422) - #{Rails.application.config.x.site_name}" %> -

unprocessable_entity (422)

+<% content_for :title, "Verzoek niet verwerkt (422) - #{Rails.application.config.x.site_name}" %> +

Verzoek niet verwerkt (422)

Je verzoek kon niet worden verwerkt. Dit komt meestal door ongeldige gegevens.

Controleer je invoer en probeer het opnieuw. Stuur een <%= link_to 'mailtje', "mailto:#{Rails.application.config.x.admin_email}" %> naar de ICT-commissie als dit probleem blijft optreden.

\ No newline at end of file