X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/b86411ce4ba88589a32ce6c19a89ba5ae90e4a6e..49d564d448e70875b1e89875e31a34af2e49e4ba:/forum/views/auth.py?ds=sidebyside diff --git a/forum/views/auth.py b/forum/views/auth.py index 9e7d6c6..3b78eed 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 @@ -156,7 +157,7 @@ def external_register(request): form1 = SimpleRegistrationForm(request.POST) if form1.is_valid(): - user_ = User(username=form1.cleaned_data['username'], email=form1.cleaned_data['email']) + user_ = User(username=form1.cleaned_data['username'], email=form1.cleaned_data['email'], real_name=form1.cleaned_data['real_name']) user_.email_isvalid = request.session.get('auth_validated_email', '') == form1.cleaned_data['email'] user_.set_unusable_password() @@ -196,13 +197,18 @@ def external_register(request): provider_class = AUTH_PROVIDERS[auth_provider].consumer - user_data = provider_class.get_user_data(request.session['assoc_key']) + if provider_class.__class__.__name__ == 'FacebookAuthConsumer': + 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', {}) username = user_data.get('username', '') email = user_data.get('email', '') + real_name = user_data.get('real_name', '') if email: request.session['auth_validated_email'] = email @@ -211,6 +217,7 @@ def external_register(request): 'next': '/', 'username': username, 'email': email, + 'real_name': real_name, }) provider_context = AUTH_PROVIDERS[request.session['auth_provider']].context @@ -403,7 +410,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")