diff --git a/relying_party/relying_party/rp_overrides.py b/relying_party/relying_party/rp_overrides.py index 9764cfd..fd0b7d7 100644 --- a/relying_party/relying_party/rp_overrides.py +++ b/relying_party/relying_party/rp_overrides.py @@ -29,6 +29,15 @@ def _visione_redirect_uri(request): return request.session.get("visione_frontend_redirect_uri") +def _visione_session_snapshot(request): + keys = ( + "visione_state", + "visione_frontend_redirect_uri", + "visione_provider_issuer", + ) + return {key: request.session.get(key) for key in keys if key in request.session} + + def _visione_error_redirect(request, error, error_description="", status=302): frontend_redirect_uri = _visione_redirect_uri(request) if frontend_redirect_uri: @@ -324,7 +333,9 @@ class VisioneRpCallbackView(SpidCieOidcRpCallbackView): request.session["rt_jti"] = decoded_refresh_token["jti"] from django.contrib.auth import login + visione_session = _visione_session_snapshot(request) login(request, user) + request.session.update(visione_session) request.session["oidc_rp_user_attrs"] = user_attrs request.session["at_expiration"] = decoded_access_token["exp"] - iat_now() request.session["at_jti"] = decoded_access_token["jti"]