Skip to content
Snippets Groups Projects
Commit 0f14c9e0 authored by Felix Schäfer's avatar Felix Schäfer :construction_worker:
Browse files

Redirect to next URL after oidc auth

parent 1cbf8b07
No related branches found
No related tags found
1 merge request!3Redirect to the "original"/next URL after OIDC login
......@@ -61,6 +61,7 @@ class OIDCAuthBackend(BaseAuthBackend):
oidc_state = rndstr()
request.session["oidc_state"] = {
oidc_state: {
"next": request.GET.get("next", None),
"generated_on": int(time.time()),
}
}
......@@ -80,6 +81,9 @@ class OIDCAuthBackend(BaseAuthBackend):
def redirect_uri(self, request):
return request.build_absolute_uri(reverse("plugins:pretix_oidc:oidc_callback"))
def get_next_url(self, request):
return request.session.pop("oidc_next_url", None)
def process_callback(self, request):
auth_response = self.client.parse_response(
AuthorizationResponse,
......@@ -87,6 +91,7 @@ class OIDCAuthBackend(BaseAuthBackend):
sformat="urlencoded",
)
request.session["oidc_next_url"] = None
oidc_state = request.session.pop("oidc_state", None)
response_state = auth_response.get("state", None)
......@@ -99,6 +104,8 @@ class OIDCAuthBackend(BaseAuthBackend):
if oidc_state[response_state]["generated_on"] < time.time() - 5 * 60:
return [None, None]
request.session["oidc_next_url"] = oidc_state[response_state]["next"]
access_token_response = self.client.do_access_token_request(
state=auth_response["state"],
scope=self.scopes,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment