From e9bcd11d947c8f109855d88d9ebc0d11b8c69407 Mon Sep 17 00:00:00 2001 From: Evgeny Fadeev Date: Tue, 10 Jul 2012 19:13:22 -0400 Subject: added a user information verification step to the ldap flow --- askbot/deps/django_authopenid/urls.py | 5 +++ askbot/deps/django_authopenid/views.py | 57 +++++++++++++++++++++++++++++----- 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/askbot/deps/django_authopenid/urls.py b/askbot/deps/django_authopenid/urls.py index f51939ab..b364aad6 100644 --- a/askbot/deps/django_authopenid/urls.py +++ b/askbot/deps/django_authopenid/urls.py @@ -17,6 +17,11 @@ urlpatterns = patterns('askbot.deps.django_authopenid.views', name='user_complete_oauth_signin' ), url(r'^%s$' % _('register/'), 'register', name='user_register'), + url( + r'^%s$' % _('verify-user-information/'), + 'verify_user_information', + name = 'verify_user_information' + ), url( r'^%s$' % _('signup/'), 'signup_with_password', diff --git a/askbot/deps/django_authopenid/views.py b/askbot/deps/django_authopenid/views.py index efdb3a16..2b6cd23c 100644 --- a/askbot/deps/django_authopenid/views.py +++ b/askbot/deps/django_authopenid/views.py @@ -322,17 +322,12 @@ def signin(request): method = 'ldap' ) if user is not None: + login(request, user) if user_is_old: - login(request, user) return HttpResponseRedirect(next_url) else: - return finalize_generic_signin( - request = request, - user = user, - user_identifier = username,#is this right? - login_provider_name = provider_name, - redirect_url = next_url - ) + return HttpResponseRedirect(reverse('verify_user_information')) + else: request.user.message_set.create(_('Incorrect user name or password')) return HttpResponseRedirect(request.path) @@ -769,6 +764,52 @@ def finalize_generic_signin( logging.debug('login success') return HttpResponseRedirect(redirect_url) +@login_required +@csrf.protect +def verify_user_information(request): + """this view collects the same information from + user ase :func:`register`, but requires that user is + already logged in and does not create a new user record + or change anything in instances of :class:`UserAssociation` + """ + register_form = forms.OpenidRegisterForm( + initial={ + 'next': get_next_url(request), + 'username': request.user.username, + 'email': request.user.email + } + ) + email_feeds_form = askbot_forms.SimpleEmailSubscribeForm() + + if request.method == 'POST': + register_form = forms.OpenidRegisterForm(request.POST) + email_feeds_form = askbot_forms.SimpleEmailSubscribeForm(request.POST) + if register_form.is_valid() and email_feeds_form.is_valid(): + + email_feeds_form.save(request.user) + + request.user.username = register_form.cleaned_data['username'] + request.user.email = register_form.cleaned_data['email'] + request.user.save() + + if askbot_settings.EMAIL_VALIDATION == True: + logging.debug('sending email validation') + send_new_email_key(request.user, nomessage=True) + output = validation_email_sent(request) + set_email_validation_message(request.user) #message set after generating view + return output + + logging.debug('success, send user to main page') + return HttpResponseRedirect(get_next_url(request)) + + logging.debug('printing authopenid/complete.html output') + data = { + 'openid_register_form': register_form, + 'email_feeds_form': email_feeds_form, + } + return render_into_skin('authopenid/complete.html', data, request) + + @not_authenticated @csrf.csrf_protect def register(request, login_provider_name=None, user_identifier=None): -- cgit v1.2.3-1-g7c22