X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/8a6bfd84137635211aa15f3991aa681c37d4cb6e..2058efeef13c648867d0810a98da1f7aea8f64ba:/forum/views/auth.py diff --git a/forum/views/auth.py b/forum/views/auth.py index db8cc32..1b18d6c 100644 --- a/forum/views/auth.py +++ b/forum/views/auth.py @@ -1,35 +1,31 @@ +# -*- coding: utf-8 -*- + +import datetime +import logging + from django.shortcuts import render_to_response, get_object_or_404 from django.template import RequestContext from django.core.urlresolvers import reverse -from forum.models import User from django.http import HttpResponseRedirect, Http404 -from forum.http_responses import HttpResponseUnauthorized from django.utils.safestring import mark_safe from django.utils.translation import ugettext as _ -from django.utils.http import urlquote_plus -from forum.views.decorators import login_required -from forum.modules import decorate +from django.utils.encoding import smart_unicode from django.contrib.auth import login, logout -from django.http import get_host -from forum.actions import SuspendAction -from forum.utils import html -from forum import settings + from writers import manage_pending_data -import types -import datetime -import logging -from forum.forms import SimpleRegistrationForm, TemporaryLoginRequestForm, \ - ChangePasswordForm, SetPasswordForm +from forum.utils import html +from forum.views.decorators import login_required +from forum.modules import decorate +from forum.forms import SimpleRegistrationForm, TemporaryLoginRequestForm, ChangePasswordForm, SetPasswordForm +from forum.http_responses import HttpResponseUnauthorized from forum.utils.mail import send_template_email - from forum.authentication.base import InvalidAuthentication from forum.authentication import AUTH_PROVIDERS +from forum.models import User, AuthKeyUserAssociation, ValidationHash +from forum.actions import UserJoinsAction, UserLoginAction +from forum import settings -from forum.models import AuthKeyUserAssociation, ValidationHash, Question, Answer -from forum.actions import UserJoinsAction - -from forum.settings import REP_GAIN_BY_EMAIL_VALIDATION from vars import ON_SIGNIN_SESSION_ATTR, PENDING_SUBMISSION_SESSION_ATTR def signin_page(request): @@ -197,7 +193,12 @@ def external_register(request): return HttpResponseRedirect(reverse('auth_signin')) provider_class = AUTH_PROVIDERS[auth_provider].consumer - user_data = provider_class.get_user_data(request.session['assoc_key']) + + # 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) + else: + user_data = provider_class.get_user_data(request.session['assoc_key']) if not user_data: user_data = request.session.get('auth_consumer_data', {}) @@ -373,8 +374,11 @@ def login_and_forward(request, user, forward=None, message=None): user.backend = "django.contrib.auth.backends.ModelBackend" login(request, user) + # Store the login action + UserLoginAction(user=user, ip=request.META['REMOTE_ADDR']).save() + if message is None: - message = _("Welcome back %s, you are now logged in") % user.username + message = _("Welcome back %s, you are now logged in") % smart_unicode(user.username) request.user.message_set.create(message=message)