X-Git-Url: https://git.mdrn.pl/django-cas-provider.git/blobdiff_plain/73bfc6b53448f5f1d10d9b3f58f2cf4f3756be41..09adf9da3df6fc5807c5b1710f967b39c101ba6c:/cas_provider/forms.py?ds=sidebyside diff --git a/cas_provider/forms.py b/cas_provider/forms.py index 47c2fdc..ba6aff0 100644 --- a/cas_provider/forms.py +++ b/cas_provider/forms.py @@ -1,7 +1,8 @@ from django import forms from django.conf import settings from django.contrib.auth import authenticate -from django.core.exceptions import ValidationError +from django.contrib.auth.forms import AuthenticationForm +from django.forms import ValidationError from django.utils.translation import ugettext_lazy as _ from models import LoginTicket import datetime @@ -10,16 +11,10 @@ import datetime __all__ = ['LoginForm', ] -class LoginForm(forms.Form): - username = forms.CharField(max_length=30, label=_('username')) - password = forms.CharField(widget=forms.PasswordInput, label=_('password')) +class LoginForm(AuthenticationForm): lt = forms.CharField(widget=forms.HiddenInput) service = forms.CharField(widget=forms.HiddenInput, required=False) - def __init__(self, *args, **kwargs): - super(LoginForm, self).__init__(*args, **kwargs) - self._user = None - def clean_lt(self): ticket = self.cleaned_data['lt'] timeframe = datetime.datetime.now() - \ @@ -31,20 +26,10 @@ class LoginForm(forms.Form): return ticket def clean(self): - username = self.cleaned_data.get('username') - password = self.cleaned_data.get('password') - user = authenticate(username=username, password=password) - if user is None: - raise ValidationError(_('Incorrect username and/or password.')) - if not user.is_active: - raise ValidationError(_('This account is disabled.')) - self._user = user + AuthenticationForm.clean(self) self.cleaned_data.get('lt').delete() return self.cleaned_data - def get_user(self): - return self._user - def get_errors(self): errors = [] for k, error in self.errors.items():