Skip to content

Commit 5b01f44

Browse files
authored
stages/redirect: fix query parameter when redirecting to flow (#12750)
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
1 parent 388b29e commit 5b01f44

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

authentik/stages/redirect/stage.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
FlowPlanner,
2121
)
2222
from authentik.flows.stage import ChallengeStageView
23-
from authentik.flows.views.executor import SESSION_KEY_PLAN, InvalidStageError
23+
from authentik.flows.views.executor import SESSION_KEY_GET, SESSION_KEY_PLAN, InvalidStageError
2424
from authentik.lib.utils.urls import reverse_with_qs
2525
from authentik.stages.redirect.models import RedirectMode, RedirectStage
2626

@@ -72,7 +72,9 @@ def switch_flow_with_context(self, flow: Flow, keep_context=True) -> str:
7272
self.request.session[SESSION_KEY_PLAN] = plan
7373
kwargs = self.executor.kwargs
7474
kwargs.update({"flow_slug": flow.slug})
75-
return reverse_with_qs("authentik_core:if-flow", self.request.GET, kwargs=kwargs)
75+
return reverse_with_qs(
76+
"authentik_core:if-flow", self.request.session[SESSION_KEY_GET], kwargs=kwargs
77+
)
7678

7779
def get_challenge(self, *args, **kwargs) -> Challenge:
7880
"""Get the redirect target. Prioritize `redirect_stage_target` if present."""

authentik/stages/redirect/tests.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""Test Redirect stage"""
22

3+
from urllib.parse import urlencode
4+
35
from django.urls.base import reverse
46
from rest_framework.exceptions import ValidationError
57

@@ -58,6 +60,23 @@ def test_flow(self):
5860
response, reverse("authentik_core:if-flow", kwargs={"flow_slug": self.target_flow.slug})
5961
)
6062

63+
def test_flow_query(self):
64+
self.stage.mode = RedirectMode.FLOW
65+
self.stage.save()
66+
67+
response = self.client.get(
68+
reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug})
69+
+ "?"
70+
+ urlencode({"query": urlencode({"test": "foo"})})
71+
)
72+
73+
self.assertStageRedirects(
74+
response,
75+
reverse("authentik_core:if-flow", kwargs={"flow_slug": self.target_flow.slug})
76+
+ "?"
77+
+ urlencode({"test": "foo"}),
78+
)
79+
6180
def test_override_static(self):
6281
policy = ExpressionPolicy.objects.create(
6382
name=generate_id(),

0 commit comments

Comments
 (0)