*Remember me* feature is working.

fix #236
This commit is contained in:
Antoine Nguyen
2012-05-03 13:44:49 +02:00
parent eb4c9d4c0c
commit d2d1c92e5d
3 changed files with 38 additions and 28 deletions
+4
View File
@@ -10,3 +10,7 @@ class LoginForm(forms.Form):
label=_("Password"),
widget=forms.PasswordInput(attrs={"class" : "span3"})
)
rememberme = forms.BooleanField(
initial=False,
required=False
)
+31 -26
View File
@@ -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 HttpResponse, HttpResponseRedirect
from django.template import RequestContext
from django.shortcuts import render_to_response
from django.http import 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.admin import views as admviews
from forms import LoginForm
from modoboa.auth.lib import *
@@ -14,37 +14,42 @@ def dologin(request):
error = None
if request.method == "POST":
form = LoginForm(request.POST)
user = authenticate(username=request.POST["username"],
password=request.POST["password"])
if user:
if user.is_active:
login(request, user)
if request.user.id != 1:
request.session["password"] = encrypt(request.POST["password"])
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"])
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,
request.POST["username"],
request.POST["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.")
error = _("Your username and password didn't match. Please try again.")
next = request.POST["next"]
if next.strip() in ["", "None"]:
next = reverse(admviews.domains)
return HttpResponseRedirect(next)
else:
error = _("Account is disabled.")
error = _("Your username and password didn't match. Please try again.")
next = request.POST.get("next", None)
else:
form = LoginForm()
next = request.GET.get("next", None)
next = request.GET.has_key("next") and request.GET["next"] or None
return render_to_response("registration/login.html", {
return _render(request, "registration/login.html", {
"form" : form, "error" : error, "next" : next,
"annoucements" : events.raiseQueryEvent("GetAnnouncement", "loginpage")
}, context_instance=RequestContext(request))
})
dologin = never_cache(dologin)
def dologout(request):
events.raiseEvent("UserLogout", request)