enterprise/stages/source: set is_redirected in flow source stage redirects to (#13604)
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
		| @ -48,6 +48,7 @@ LOGGER = get_logger() | |||||||
|  |  | ||||||
| PLAN_CONTEXT_SOURCE_GROUPS = "source_groups" | PLAN_CONTEXT_SOURCE_GROUPS = "source_groups" | ||||||
| SESSION_KEY_SOURCE_FLOW_STAGES = "authentik/flows/source_flow_stages" | SESSION_KEY_SOURCE_FLOW_STAGES = "authentik/flows/source_flow_stages" | ||||||
|  | SESSION_KEY_SOURCE_FLOW_CONTEXT = "authentik/flows/source_flow_context" | ||||||
| SESSION_KEY_OVERRIDE_FLOW_TOKEN = "authentik/flows/source_override_flow_token"  # nosec | SESSION_KEY_OVERRIDE_FLOW_TOKEN = "authentik/flows/source_override_flow_token"  # nosec | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -261,6 +262,7 @@ class SourceFlowManager: | |||||||
|                 plan.append_stage(stage) |                 plan.append_stage(stage) | ||||||
|         for stage in self.request.session.get(SESSION_KEY_SOURCE_FLOW_STAGES, []): |         for stage in self.request.session.get(SESSION_KEY_SOURCE_FLOW_STAGES, []): | ||||||
|             plan.append_stage(stage) |             plan.append_stage(stage) | ||||||
|  |         plan.context.update(self.request.session.get(SESSION_KEY_SOURCE_FLOW_CONTEXT, {})) | ||||||
|         return plan.to_redirect(self.request, flow) |         return plan.to_redirect(self.request, flow) | ||||||
|  |  | ||||||
|     def handle_auth( |     def handle_auth( | ||||||
|  | |||||||
| @ -11,13 +11,14 @@ from guardian.shortcuts import get_anonymous_user | |||||||
| from authentik.core.models import Source, User | from authentik.core.models import Source, User | ||||||
| from authentik.core.sources.flow_manager import ( | from authentik.core.sources.flow_manager import ( | ||||||
|     SESSION_KEY_OVERRIDE_FLOW_TOKEN, |     SESSION_KEY_OVERRIDE_FLOW_TOKEN, | ||||||
|  |     SESSION_KEY_SOURCE_FLOW_CONTEXT, | ||||||
|     SESSION_KEY_SOURCE_FLOW_STAGES, |     SESSION_KEY_SOURCE_FLOW_STAGES, | ||||||
| ) | ) | ||||||
| from authentik.core.types import UILoginButton | from authentik.core.types import UILoginButton | ||||||
| from authentik.enterprise.stages.source.models import SourceStage | from authentik.enterprise.stages.source.models import SourceStage | ||||||
| from authentik.flows.challenge import Challenge, ChallengeResponse | from authentik.flows.challenge import Challenge, ChallengeResponse | ||||||
| from authentik.flows.models import FlowToken, in_memory_stage | from authentik.flows.models import FlowToken, in_memory_stage | ||||||
| from authentik.flows.planner import PLAN_CONTEXT_IS_RESTORED | from authentik.flows.planner import PLAN_CONTEXT_IS_REDIRECTED, PLAN_CONTEXT_IS_RESTORED | ||||||
| from authentik.flows.stage import ChallengeStageView, StageView | from authentik.flows.stage import ChallengeStageView, StageView | ||||||
| from authentik.lib.utils.time import timedelta_from_string | from authentik.lib.utils.time import timedelta_from_string | ||||||
|  |  | ||||||
| @ -53,6 +54,9 @@ class SourceStageView(ChallengeStageView): | |||||||
|         resume_token = self.create_flow_token() |         resume_token = self.create_flow_token() | ||||||
|         self.request.session[SESSION_KEY_OVERRIDE_FLOW_TOKEN] = resume_token |         self.request.session[SESSION_KEY_OVERRIDE_FLOW_TOKEN] = resume_token | ||||||
|         self.request.session[SESSION_KEY_SOURCE_FLOW_STAGES] = [in_memory_stage(SourceStageFinal)] |         self.request.session[SESSION_KEY_SOURCE_FLOW_STAGES] = [in_memory_stage(SourceStageFinal)] | ||||||
|  |         self.request.session[SESSION_KEY_SOURCE_FLOW_CONTEXT] = { | ||||||
|  |             PLAN_CONTEXT_IS_REDIRECTED: self.executor.flow, | ||||||
|  |         } | ||||||
|         return self.login_button.challenge |         return self.login_button.challenge | ||||||
|  |  | ||||||
|     def create_flow_token(self) -> FlowToken: |     def create_flow_token(self) -> FlowToken: | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Jens L.
					Jens L.