aboutsummaryrefslogtreecommitdiff
path: root/gn_auth/errors.py
diff options
context:
space:
mode:
Diffstat (limited to 'gn_auth/errors.py')
-rw-r--r--gn_auth/errors.py18
1 files changed, 16 insertions, 2 deletions
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"""