mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Middleware was actually useful
This commit is contained in:
@@ -118,6 +118,7 @@ MIDDLEWARE = (
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
'modoboa.core.middleware.LocalConfigMiddleware',
|
||||
'modoboa.lib.middleware.CommonExceptionCatcher',
|
||||
'modoboa.lib.middleware.RequestCatcherMiddleware',
|
||||
)
|
||||
|
||||
|
||||
@@ -1,8 +1,30 @@
|
||||
"""Custom middlewares."""
|
||||
|
||||
from django.http import JsonResponse
|
||||
from django.utils.deprecation import MiddlewareMixin
|
||||
from django.utils.encoding import smart_str
|
||||
|
||||
from modoboa.lib import signals as lib_signals
|
||||
from modoboa.lib.exceptions import ModoboaException
|
||||
from modoboa.lib.web_utils import _render_error
|
||||
|
||||
|
||||
def is_ajax(request):
|
||||
return request.META.get("HTTP_X_REQUESTED_WITH") == "XMLHttpRequest"
|
||||
|
||||
|
||||
class CommonExceptionCatcher(MiddlewareMixin):
|
||||
"""Modoboa exceptions catcher."""
|
||||
|
||||
def process_exception(self, request, exception):
|
||||
if not isinstance(exception, ModoboaException):
|
||||
return None
|
||||
|
||||
if "/api/" in request.path:
|
||||
http_code = exception.http_code if exception.http_code else 500
|
||||
return JsonResponse({"error": str(exception)}, status=http_code)
|
||||
|
||||
return _render_error(request, user_context={"error": smart_str(exception)})
|
||||
|
||||
|
||||
class RequestCatcherMiddleware(MiddlewareMixin):
|
||||
|
||||
@@ -2,6 +2,14 @@
|
||||
|
||||
import re
|
||||
|
||||
from django.shortcuts import render
|
||||
|
||||
|
||||
def _render_error(request, errortpl="error", user_context=None):
|
||||
if user_context is None:
|
||||
user_context = {}
|
||||
return render(request, f"common/{errortpl}.html", user_context)
|
||||
|
||||
|
||||
def size2integer(value: str, output_unit: str = "B") -> int:
|
||||
"""
|
||||
|
||||
@@ -129,6 +129,7 @@ MIDDLEWARE = (
|
||||
"django.contrib.messages.middleware.MessageMiddleware",
|
||||
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
||||
"modoboa.core.middleware.LocalConfigMiddleware",
|
||||
"modoboa.lib.middleware.CommonExceptionCatcher",
|
||||
"modoboa.lib.middleware.RequestCatcherMiddleware",
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user