Skip to content

Commit

Permalink
Merge pull request #282 from hongquan/fix/django-https-detection
Browse files Browse the repository at this point in the history
Fix: Django not detect that our site is HTTPS
  • Loading branch information
hongquan authored Feb 27, 2025
2 parents 4d671be + 485b51d commit 5d4412d
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
17 changes: 13 additions & 4 deletions src/pretalx/common/views/redirect.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
import logging
import urllib.parse

from django.core import signing
from django.http import HttpResponseBadRequest, HttpResponseRedirect
from django.http import (
HttpRequest,
HttpResponse,
HttpResponseBadRequest,
HttpResponseRedirect,
)
from django.shortcuts import render
from django.urls import reverse

logger = logging.getLogger(__name__)

def _is_samesite_referer(request):

def _is_samesite_referer(request: HttpRequest) -> bool:
referer = request.headers.get("referer")
if referer is None:
return False
Expand All @@ -20,7 +28,7 @@ def _is_samesite_referer(request):
return (referer.scheme, referer.netloc) == (request.scheme, request.get_host())


def redirect_view(request):
def redirect_view(request: HttpRequest) -> HttpResponse:
signer = signing.Signer(salt="safe-redirect")
try:
url = signer.unsign(request.GET.get("url", ""))
Expand All @@ -40,6 +48,7 @@ def redirect_view(request):
return HttpResponseRedirect(url)


def safelink(url):
def safelink(url: str) -> str:
"""Wrap a URL with our redirect view to check if the user is about to go to external site."""
signer = signing.Signer(salt="safe-redirect")
return reverse("redirect") + "?url=" + urllib.parse.quote(signer.sign(url))
3 changes: 3 additions & 0 deletions src/pretalx/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -603,6 +603,9 @@ def merge_csp(*options, config=None):
},
}

# We need this for Django to detect correctly that our website is served via HTTPS
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")

VITE_DEV_SERVER_PORT = 8080
VITE_DEV_SERVER = f"http://localhost:{VITE_DEV_SERVER_PORT}"
VITE_DEV_MODE = DEBUG
Expand Down

0 comments on commit 5d4412d

Please sign in to comment.