X-Git-Url: https://git.mdrn.pl/django-cas-provider.git/blobdiff_plain/2a63016905079a3098b72ac7ae25b47e423b4535..4a51c1aaa9c3eeac5368ff4e06870a94f18123aa:/cas_provider/forms.py diff --git a/cas_provider/forms.py b/cas_provider/forms.py index cb3660b..8a1452a 100644 --- a/cas_provider/forms.py +++ b/cas_provider/forms.py @@ -2,15 +2,41 @@ from django import forms from django.contrib.auth.forms import AuthenticationForm from django.contrib.auth import authenticate +from models import ServiceTicket, LoginTicket from utils import create_login_ticket + class LoginForm(forms.Form): email = forms.CharField(max_length=255) password = forms.CharField(widget=forms.PasswordInput) #warn = forms.BooleanField(required=False) # TODO: Implement - lt = forms.CharField(widget=forms.HiddenInput, initial=create_login_ticket) - def __init__(self, service=None, renew=None, gateway=None, request=None, *args, **kwargs): + lt = forms.CharField(widget=forms.HiddenInput, initial=create_login_ticket, required=False) + service = forms.CharField(widget=forms.HiddenInput, initial='', required=False) + remember_me = forms.BooleanField(required=False) + + def __init__(self, *args, **kwargs): + # renew = kwargs.pop('renew', None) + # gateway = kwargs.pop('gateway', None) + request = kwargs.pop('request', None) super(LoginForm, self).__init__(*args, **kwargs) self.request = request - if service is not None: - self.fields['service'] = forms.CharField(widget=forms.HiddenInput, initial=service) + + def clean_remember_me(self): + remember = self.cleaned_data['remember_me'] + if not remember and self.request is not None: + self.request.session.set_expiry(0) + + def clean_lt(self): + lt = self.cleaned_data.get('lt', + self.initial.get('lt', + self.fields['lt'].initial())) + try: + login_ticket = LoginTicket.objects.get(ticket=lt) + except: + raise forms.ValidationError("Login ticket expired. Please try again.") + else: + login_ticket.delete() + + +class MergeLoginForm(LoginForm): + email = forms.CharField(max_length=255, widget=forms.HiddenInput)