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:
parent
cfdfb1088b
commit
c9136c0bff
@ -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):
|
||||||
|
@ -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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user