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