From b1b2bfbc71faa65210a17de7b6da55b25506607f Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Mon, 29 Jan 2024 04:54:37 +0300 Subject: Error handling: Handle 404 error. --- gn_auth/errors.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'gn_auth/errors.py') diff --git a/gn_auth/errors.py b/gn_auth/errors.py index bd2c5eb..52fc489 100644 --- a/gn_auth/errors.py +++ b/gn_auth/errors.py @@ -1,8 +1,21 @@ """Handle application level errors.""" -from flask import Flask, jsonify, current_app +from werkzeug.exceptions import NotFound +from flask import Flask, request, jsonify, current_app, render_template from gn_auth.auth.authorisation.errors import AuthorisationError +def page_not_found(exc): + """404 handler.""" + content_type = request.content_type + if bool(content_type) and content_type.lower() == "application/json": + return jsonify({ + "error": exc.name, + "error_description": (f"The page '{request.url}' does not exist on " + "this server.") + }), 404 + + return render_template("404.html", page=request.url) + def handle_authorisation_error(exc: AuthorisationError): """Handle AuthorisationError if not handled anywhere else.""" current_app.logger.error(exc) @@ -12,7 +25,8 @@ def handle_authorisation_error(exc: AuthorisationError): }), exc.error_code __error_handlers__ = { - AuthorisationError: handle_authorisation_error + AuthorisationError: handle_authorisation_error, + NotFound: page_not_found } def register_error_handlers(app: Flask): """Register ALL defined error handlers""" -- cgit v1.2.3