From 481ff8678936949dd3483278dfcdc5b385475aa4 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 29 Apr 2014 15:50:58 +0200 Subject: [PATCH] msp: pass error from MSP to authorization requester --- portail_citoyen/apps/msp/views.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/portail_citoyen/apps/msp/views.py b/portail_citoyen/apps/msp/views.py index c699893..d1f8494 100644 --- a/portail_citoyen/apps/msp/views.py +++ b/portail_citoyen/apps/msp/views.py @@ -257,7 +257,21 @@ class AuthorizeView(View): url = urlparse.urlunparse(parsed) return HttpResponseRedirect(url) if 'error' in GET: - assert False + assert 'state' in GET + state = GET['state'] + saved = cache.get('msp-state-' + state) + old_state = saved['state'] + redirect_uri = saved['redirect_uri'] + parsed = urlparse.urlparse(redirect_uri) + params = urlparse.parse_qs(parsed.query) + params.update(dict(GET)) + if old_state: + params['state'] = old_state + else: + del params['state'] + parsed = parsed._replace(query=urllib.urlencode(params, True)) + url = urlparse.urlunparse(parsed) + return HttpResponseRedirect(url) else: assert 'redirect_uri' in GET assert 'scope' in GET