feat: support login with multiple cie account
This commit is contained in:
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user