X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/bc6579a5a090016d4f7ade2d2e47ebc2177b9c41..174c53e97bcf1e5412c141829d152aa5a2b8684c:/forum/views/auth.py diff --git a/forum/views/auth.py b/forum/views/auth.py index ddc5e95..27cf5c9 100644 --- a/forum/views/auth.py +++ b/forum/views/auth.py @@ -9,6 +9,7 @@ from django.utils.http import urlquote_plus from django.contrib.auth.decorators import login_required from django.contrib.auth import login, logout from django.http import get_host +from forum.actions import SuspendAction import types import datetime import logging @@ -165,7 +166,8 @@ def external_register(request): auth_provider = request.session['auth_provider'] except: request.session['auth_error'] = _( - "Oops, something went wrong in the middle of this process. Please try again.") + "Oops, something went wrong in the middle of this process. Please try again. Note that you need to have cookies enabled for the authentication to work." + ) logging.error("Missing session data when trying to complete user registration: %s" % ", ".join( ["%s: %s" % (k, v) for k, v in request.META.items()])) return HttpResponseRedirect(reverse('auth_signin')) @@ -226,6 +228,9 @@ def request_temp_login(request): if form.is_valid(): user = form.user_cache + if user.is_suspended(): + return forward_suspended_user(request, user, False) + try: hash = get_object_or_404(ValidationHash, user=user, type='templogin') if hash.expiration < datetime.datetime.now(): @@ -346,7 +351,9 @@ POST_SIGNIN_ACTIONS = { } def login_and_forward(request, user, forward=None, message=None): - old_session = request.session.session_key + if user.is_suspended(): + return forward_suspended_user(request, user) + user.backend = "django.contrib.auth.backends.ModelBackend" login(request, user) @@ -381,13 +388,21 @@ def login_and_forward(request, user, forward=None, message=None): request.user.message_set.create(message=message) return HttpResponseRedirect(forward) -@login_required -def signout(request): - """ - signout from the website. Remove openid from session and kill it. +def forward_suspended_user(request, user, show_private_msg=True): + message = _("Sorry, but this account is suspended") + if show_private_msg: + msg_type = 'privatemsg' + else: + msg_type = 'publicmsg' + + suspension = user.suspension + if suspension: + message += (":
" + suspension.extra.get(msg_type, '')) - url : /signout/" - """ + request.user.message_set.create(message) + return HttpResponseRedirect(reverse('index')) +@login_required +def signout(request): logout(request) return HttpResponseRedirect(reverse('index')) \ No newline at end of file