Test for CAS federation
This commit is contained in:
@ -9,7 +9,7 @@
|
||||
#
|
||||
# (c) 2015 Valentin Samir
|
||||
"""forms for the app"""
|
||||
from .default_settings import settings
|
||||
from .default_settings import settings, CAS_FEDERATE_PROVIDERS_LIST
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
@ -27,6 +27,17 @@ class WarnForm(forms.Form):
|
||||
lt = forms.CharField(widget=forms.HiddenInput(), required=False)
|
||||
|
||||
|
||||
class FederateSelect(forms.Form):
|
||||
provider = forms.ChoiceField(
|
||||
label=_('Identity provider'),
|
||||
choices=[(p, p) for p in CAS_FEDERATE_PROVIDERS_LIST]
|
||||
)
|
||||
service = forms.CharField(label=_('service'), widget=forms.HiddenInput(), required=False)
|
||||
method = forms.CharField(widget=forms.HiddenInput(), required=False)
|
||||
remember = forms.BooleanField(label=_('Remember the identity provider'), required=False)
|
||||
warn = forms.BooleanField(label=_('warn'), required=False)
|
||||
|
||||
|
||||
class UserCredential(forms.Form):
|
||||
"""Form used on the login page to retrive user credentials"""
|
||||
username = forms.CharField(label=_('login'))
|
||||
@ -46,6 +57,31 @@ class UserCredential(forms.Form):
|
||||
cleaned_data["username"] = auth.username
|
||||
else:
|
||||
raise forms.ValidationError(_(u"Bad user"))
|
||||
return cleaned_data
|
||||
|
||||
|
||||
class FederateUserCredential(UserCredential):
|
||||
"""Form used on the login page to retrive user credentials"""
|
||||
username = forms.CharField(widget=forms.HiddenInput())
|
||||
service = forms.CharField(widget=forms.HiddenInput(), required=False)
|
||||
password = forms.CharField(widget=forms.HiddenInput())
|
||||
ticket = forms.CharField(widget=forms.HiddenInput())
|
||||
lt = forms.CharField(widget=forms.HiddenInput(), required=False)
|
||||
method = forms.CharField(widget=forms.HiddenInput(), required=False)
|
||||
warn = forms.BooleanField(widget=forms.HiddenInput(), required=False)
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super(FederateUserCredential, self).clean()
|
||||
try:
|
||||
component = cleaned_data["username"].split('@')
|
||||
username = '@'.join(component[:-1])
|
||||
provider = component[-1]
|
||||
user = models.FederatedUser.objects.get(username=username, provider=provider)
|
||||
user.ticket = ""
|
||||
user.save()
|
||||
except models.FederatedUser.DoesNotExist:
|
||||
raise
|
||||
return cleaned_data
|
||||
|
||||
|
||||
class TicketForm(forms.ModelForm):
|
||||
|
Reference in New Issue
Block a user