X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/39649e5b8ecb59ca9fb37cd0c614372481b25f4a..d3b0d0f597e0f84246dd755c6de3f29770134b44:/forum/views/auth.py diff --git a/forum/views/auth.py b/forum/views/auth.py index d11c20b..92aa894 100644 --- a/forum/views/auth.py +++ b/forum/views/auth.py @@ -3,6 +3,7 @@ import datetime import logging import urllib +from urlparse import urlparse from django.shortcuts import render_to_response, get_object_or_404 from django.template import RequestContext @@ -196,12 +197,12 @@ def external_register(request): provider_class = AUTH_PROVIDERS[auth_provider].consumer - # Pass the cookies to the Facebook authentication class get_user_data method. We need them to take the access token. if provider_class.__class__.__name__ == 'FacebookAuthConsumer': - user_data = provider_class.get_user_data(request.COOKIES) + user_data = provider_class.get_user_data(request.session['access_token']) else: user_data = provider_class.get_user_data(request.session['assoc_key']) + if not user_data: user_data = request.session.get('auth_consumer_data', {}) @@ -407,7 +408,16 @@ def login_and_forward(request, user, forward=None, message=None): return manage_pending_data(request, _('save'), forward) additional_get_params = urllib.urlencode(request.GET) - return HttpResponseRedirect(forward + "?%s" % additional_get_params) + + parsed_forward = urlparse(forward) + + # If there is already some parsed query in the URL then change the forward URL + if parsed_forward.query: + forward_url = forward + "&%s" % additional_get_params + else: + forward_url = forward + "?%s" % additional_get_params + + return HttpResponseRedirect(forward_url) def forward_suspended_user(request, user, show_private_msg=True): message = _("Sorry, but this account is suspended")