Skip to content

Commit 5e9db29

Browse files
committed
feat: redirect user to requested URL after successful altcha verification
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent a19b2c2 commit 5e9db29

2 files changed

Lines changed: 11 additions & 6 deletions

File tree

vulnerabilities/middleware/altcha_protection.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@
88
#
99

1010
import time
11+
from urllib.parse import urlencode
1112

1213
from django.shortcuts import redirect
1314
from django.utils.deprecation import MiddlewareMixin
1415

16+
SESSION_TIMEOUT = 900 # 15 minutes
17+
1518

1619
class AltchaProtectionMiddleware(MiddlewareMixin):
1720
PROTECTED_PREFIXES = (
@@ -20,23 +23,23 @@ class AltchaProtectionMiddleware(MiddlewareMixin):
2023
"/advisories/",
2124
"/affected-by-advisories/v2/",
2225
"/fixing-advisories/v2/",
26+
"/pipelines/",
2327
)
2428

25-
SESSION_TIMEOUT = 900 # 15 minutes
26-
2729
def __call__(self, request):
2830
protected = any(request.path.startswith(prefix) for prefix in self.PROTECTED_PREFIXES)
2931

3032
if not protected:
3133
return self.get_response(request)
3234

3335
verified_at = request.session.get("altcha_verified_at")
36+
next_url = request.get_full_path()
3437

3538
if not verified_at:
36-
return redirect(f"/altcha/")
39+
return redirect(f"/altcha/?{urlencode({'next': next_url})}")
3740

38-
if time.time() - verified_at > self.SESSION_TIMEOUT:
41+
if time.time() - verified_at > SESSION_TIMEOUT:
3942
request.session.pop("altcha_verified_at", None)
40-
return redirect(f"/altcha/")
43+
return redirect(f"/altcha/?{urlencode({'next': next_url})}")
4144

4245
return self.get_response(request)

vulnerabilities/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1167,4 +1167,6 @@ class AltchaView(FormView):
11671167

11681168
def form_valid(self, form):
11691169
self.request.session["altcha_verified_at"] = time.time()
1170-
return redirect("/")
1170+
1171+
next_url = self.request.GET.get("next", "/")
1172+
return redirect(next_url)

0 commit comments

Comments
 (0)