using south for db migrations
[django-cas-provider.git] / cas_provider / forms.py
index 652f437..ba6aff0 100644 (file)
@@ -1,6 +1,7 @@
 from django import forms
 from django.conf import settings
 from django.contrib.auth import authenticate
+from django.contrib.auth.forms import AuthenticationForm
 from django.forms import ValidationError
 from django.utils.translation import ugettext_lazy as _
 from models import LoginTicket
@@ -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():