1
0
mirror of https://github.com/django/django.git synced 2025-07-04 17:59:13 +00:00

multi-auth: Updated auth views to use new api.

git-svn-id: http://code.djangoproject.com/svn/django/branches/multi-auth@2887 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Joseph Kocherhans 2006-05-10 04:30:25 +00:00
parent cfdfb1088b
commit c9136c0bff
2 changed files with 10 additions and 13 deletions

View File

@ -1,4 +1,5 @@
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.auth import authenticate
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.template import Context, loader from django.template import Context, loader
from django.core import validators from django.core import validators
@ -20,8 +21,7 @@ class AuthenticationForm(forms.Manipulator):
self.fields = [ self.fields = [
forms.TextField(field_name="username", length=15, maxlength=30, is_required=True, forms.TextField(field_name="username", length=15, maxlength=30, is_required=True,
validator_list=[self.isValidUser, self.hasCookiesEnabled]), validator_list=[self.isValidUser, self.hasCookiesEnabled]),
forms.PasswordField(field_name="password", length=15, maxlength=30, is_required=True, forms.PasswordField(field_name="password", length=15, maxlength=30, is_required=True),
validator_list=[self.isValidPasswordForUser]),
] ]
self.user_cache = None self.user_cache = None
@ -30,14 +30,10 @@ class AuthenticationForm(forms.Manipulator):
raise validators.ValidationError, _("Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in.") raise validators.ValidationError, _("Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in.")
def isValidUser(self, field_data, all_data): def isValidUser(self, field_data, all_data):
try: username = field_data
self.user_cache = User.objects.get(username=field_data) password = all_data.get('password', None)
except User.DoesNotExist: self.user_cache = authenticate(username=username, password=password)
raise validators.ValidationError, _("Please enter a correct username and password. Note that both fields are case-sensitive.") if self.user_cache is None:
def isValidPasswordForUser(self, field_data, all_data):
if self.user_cache is not None and not self.user_cache.check_password(field_data):
self.user_cache = None
raise validators.ValidationError, _("Please enter a correct username and password. Note that both fields are case-sensitive.") raise validators.ValidationError, _("Please enter a correct username and password. Note that both fields are case-sensitive.")
def get_user_id(self): def get_user_id(self):

View File

@ -3,7 +3,6 @@ from django.contrib.auth.forms import PasswordResetForm, PasswordChangeForm
from django import forms from django import forms
from django.shortcuts import render_to_response from django.shortcuts import render_to_response
from django.template import RequestContext from django.template import RequestContext
from django.contrib.auth.models import SESSION_KEY
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
@ -19,7 +18,8 @@ def login(request):
# Light security check -- make sure redirect_to isn't garbage. # Light security check -- make sure redirect_to isn't garbage.
if not redirect_to or '://' in redirect_to or ' ' in redirect_to: if not redirect_to or '://' in redirect_to or ' ' in redirect_to:
redirect_to = '/accounts/profile/' redirect_to = '/accounts/profile/'
request.session[SESSION_KEY] = manipulator.get_user_id() from django.contrib.auth import login
login(request, manipulator.get_user())
request.session.delete_test_cookie() request.session.delete_test_cookie()
return HttpResponseRedirect(redirect_to) return HttpResponseRedirect(redirect_to)
else: else:
@ -33,8 +33,9 @@ def login(request):
def logout(request, next_page=None): def logout(request, next_page=None):
"Logs out the user and displays 'You are logged out' message." "Logs out the user and displays 'You are logged out' message."
from django.contrib.auth import logout
try: try:
del request.session[SESSION_KEY] logout(request)
except KeyError: except KeyError:
return render_to_response('registration/logged_out.html', {'title': 'Logged out'}, context_instance=RequestContext(request)) return render_to_response('registration/logged_out.html', {'title': 'Logged out'}, context_instance=RequestContext(request))
else: else: