diff --git a/modoboa/auth/views.py b/modoboa/auth/views.py index f11db3bc4..b09c71163 100755 --- a/modoboa/auth/views.py +++ b/modoboa/auth/views.py @@ -1,11 +1,11 @@ # coding: utf-8 from django.views.decorators.cache import never_cache from django.contrib.auth import authenticate, login, logout -from django.http import HttpResponseRedirect +from django.http import HttpResponse, HttpResponseRedirect from django.core.urlresolvers import reverse from django.utils.translation import ugettext as _ from modoboa.lib import events -from modoboa.lib.webutils import _render +from modoboa.lib.webutils import _render_to_string from modoboa.admin import views as admviews from forms import LoginForm from modoboa.auth.lib import * @@ -17,37 +17,36 @@ def dologin(request): if form.is_valid(): user = authenticate(username=form.cleaned_data["username"], password=form.cleaned_data["password"]) - if user: - if user.is_active: - if not form.cleaned_data["rememberme"]: - request.session.set_expiry(0) - login(request, user) - if request.user.id != 1: - request.session["password"] = encrypt(request.POST["password"]) + if user and user.is_active: + if not form.cleaned_data["rememberme"]: + request.session.set_expiry(0) + login(request, user) + if request.user.id != 1: + request.session["password"] = encrypt(request.POST["password"]) - request.session["django_language"] = \ - parameters.get_user(request.user, "LANG", app="general") + request.session["django_language"] = \ + parameters.get_user(request.user, "LANG", app="general") - events.raiseEvent("UserLogin", request, - form.cleaned_data["username"], - form.cleaned_data["password"]) + events.raiseEvent("UserLogin", request, + form.cleaned_data["username"], + form.cleaned_data["password"]) - next = request.POST["next"] - if next.strip() in ["", "None"]: - next = reverse(admviews.domains) - return HttpResponseRedirect(next) - else: - error = _("Account is disabled.") + next = request.POST["next"] + if next.strip() in ["", "None"]: + next = reverse(admviews.domains) + return HttpResponseRedirect(next) error = _("Your username and password didn't match. Please try again.") next = request.POST.get("next", None) + httpcode = 401 else: form = LoginForm() next = request.GET.get("next", None) + httpcode = 200 - return _render(request, "registration/login.html", { - "form" : form, "error" : error, "next" : next, - "annoucements" : events.raiseQueryEvent("GetAnnouncement", "loginpage") - }) + return HttpResponse(_render_to_string(request, "registration/login.html", { + "form" : form, "error" : error, "next" : next, + "annoucements" : events.raiseQueryEvent("GetAnnouncement", "loginpage") + }), status=httpcode) dologin = never_cache(dologin)