Skip to content

Commit

Permalink
add middleware to separate usercontent and app domain
Browse files Browse the repository at this point in the history
  • Loading branch information
jeriox committed Sep 22, 2024
1 parent 7780b3b commit 98fc2f1
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
17 changes: 17 additions & 0 deletions ephios/extra/middleware.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
from urllib.parse import urljoin, urlsplit

from django.conf import settings
from django.shortcuts import redirect

from ephios.core.services.notifications.types import NOTIFICATION_READ_PARAM_NAME

Expand Down Expand Up @@ -36,3 +39,17 @@ def __call__(self, request):
except Notification.DoesNotExist:
pass
return response


class EphiosMediaFileMiddleware:
def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):
response = self.get_response(request)
if (
request.get_host() == urlsplit(settings.GET_USERCONTENT_URL()).netloc
and request.resolver_match.url_name != "document"
):
return redirect(urljoin(settings.GET_SITE_URL(), request.path))
return response
9 changes: 6 additions & 3 deletions ephios/plugins/files/views.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
import os
from urllib.parse import urlsplit

from django.conf import settings
from django.http import HttpResponse
from django.shortcuts import get_object_or_404
from django.shortcuts import get_object_or_404, redirect
from django.views import View
from guardian.mixins import LoginRequiredMixin

from ephios.plugins.files.models import Document


class DocumentView(View, LoginRequiredMixin):
class DocumentView(LoginRequiredMixin, View):
def get(self, request, *args, **kwargs):
if (loc := urlsplit(settings.GET_USERCONTENT_URL()).netloc) and request.get_host() != loc:
return redirect(settings.GET_USERCONTENT_URL() + request.path)
document = get_object_or_404(Document, id=kwargs["pk"])
response = HttpResponse()
response["Content-Disposition"] = (
"attachment; filename=" + os.path.split(document.file.name)[1]
)
response["X-Accel-Redirect"] = settings.MEDIA_URL + document.file.name
response["X-Accel-Redirect"] = document.file.url
return response
5 changes: 5 additions & 0 deletions ephios/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@
"django.middleware.locale.LocaleMiddleware",
"ephios.extra.middleware.EphiosLocaleMiddleware",
"ephios.extra.middleware.EphiosNotificationMiddleware",
"ephios.extra.middleware.EphiosMediaFileMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
Expand Down Expand Up @@ -318,6 +319,10 @@ def GET_SITE_URL():
return site_url


def GET_USERCONTENT_URL():
return MEDIA_URL


# Guardian configuration
ANONYMOUS_USER_NAME = None
GUARDIAN_MONKEY_PATCH = False
Expand Down

0 comments on commit 98fc2f1

Please sign in to comment.