- self.request = request
- if service is not None:
- self.fields['service'] = forms.CharField(widget=forms.HiddenInput, initial=service)
+ self._user = None
+
+ def clean_lt(self):
+ ticket = self.cleaned_data['lt']
+ timeframe = datetime.datetime.now() - \
+ datetime.timedelta(minutes=settings.CAS_TICKET_EXPIRATION)
+ try:
+ return LoginTicket.objects.get(ticket=ticket, created__gte=timeframe)
+ except LoginTicket.DoesNotExist:
+ raise ValidationError(_('Login ticket expired. Please try again.'))
+ 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
+ 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():
+ errors += [e for e in error]
+ return errors