From 5f5f427c9fc4caf561bc3b49c1b14f922deca55c Mon Sep 17 00:00:00 2001 From: Michael Derynck Date: Thu, 13 Oct 2022 17:18:22 -0600 Subject: [PATCH] Add middleware to catch exception for missing integration, reduce spamminess of logs --- engine/apps/integrations/middlewares.py | 14 ++++++++++++++ engine/settings/base.py | 1 + 2 files changed, 15 insertions(+) create mode 100644 engine/apps/integrations/middlewares.py diff --git a/engine/apps/integrations/middlewares.py b/engine/apps/integrations/middlewares.py new file mode 100644 index 00000000..87408370 --- /dev/null +++ b/engine/apps/integrations/middlewares.py @@ -0,0 +1,14 @@ +import logging + +from django.core.exceptions import PermissionDenied +from django.http import HttpResponse +from django.utils.deprecation import MiddlewareMixin +from rest_framework import status + +logger = logging.getLogger(__name__) + + +class IntegrationExceptionMiddleware(MiddlewareMixin): + def process_exception(self, request, exception): + if request.path.startswith("/integrations/v1") and isinstance(exception, PermissionDenied): + return HttpResponse(exception, status=status.HTTP_403_FORBIDDEN) diff --git a/engine/settings/base.py b/engine/settings/base.py index d9ec9f36..2dfeaa30 100644 --- a/engine/settings/base.py +++ b/engine/settings/base.py @@ -244,6 +244,7 @@ MIDDLEWARE = [ "django.middleware.clickjacking.XFrameOptionsMiddleware", "social_django.middleware.SocialAuthExceptionMiddleware", "apps.social_auth.middlewares.SocialAuthAuthCanceledExceptionMiddleware", + "apps.integrations.middlewares.IntegrationExceptionMiddleware", ] LOG_REQUEST_ID_HEADER = "HTTP_X_CLOUD_TRACE_CONTEXT"