From: Matías Aguirre Date: Tue, 16 Aug 2011 03:19:25 +0000 (-0300) Subject: Do not use current user when completing /login/ process. Closes gh-107 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=938acf70bd4c64db4898e2a849c28586e58e0738;p=django-social-auth.git Do not use current user when completing /login/ process. Closes gh-107 --- diff --git a/social_auth/views.py b/social_auth/views.py index c05d24a..2ab18f4 100644 --- a/social_auth/views.py +++ b/social_auth/views.py @@ -87,7 +87,7 @@ def associate(request, backend): @dsa_view() def associate_complete(request, backend): """Authentication complete process""" - if auth_complete(request, backend): + if auth_complete(request, backend, request.user): url = NEW_ASSOCIATION_REDIRECT if NEW_ASSOCIATION_REDIRECT else \ request.session.pop(REDIRECT_FIELD_NAME, '') or \ DEFAULT_REDIRECT @@ -125,19 +125,6 @@ def auth_process(request, backend): content_type='text/html;charset=UTF-8') -def auth_complete(request, backend): - """Complete auth process. Return authenticated user or None.""" - user = request.user if request.user.is_authenticated() else None - - try: - user = backend.auth_complete(user=user) - except ValueError, e: # some Authentication error ocurred - error_key = getattr(settings, 'SOCIAL_AUTH_ERROR_KEY', None) - if error_key: # store error in session - request.session[error_key] = str(e) - return user - - def complete_process(request, backend): """Authentication complete process""" user = auth_complete(request, backend) @@ -167,3 +154,17 @@ def complete_process(request, backend): else: url = LOGIN_ERROR_URL return HttpResponseRedirect(url) + + +def auth_complete(request, backend, user=None): + """Complete auth process. Return authenticated user or None.""" + if user and not user.is_authenticated(): + user = None + + try: + user = backend.auth_complete(user=user) + except ValueError, e: # some Authentication error ocurred + error_key = getattr(settings, 'SOCIAL_AUTH_ERROR_KEY', None) + if error_key: # store error in session + request.session[error_key] = str(e) + return user