43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
import urllib
|
|
|
|
from django.utils.translation import gettext_noop
|
|
from django.http import HttpResponseRedirect
|
|
from django.contrib.auth import REDIRECT_FIELD_NAME
|
|
|
|
from authentic2.saml.models import LibertyProvider
|
|
|
|
from . import forms, views_profile
|
|
|
|
class AuthSAML2Frontend(object):
|
|
def enabled(self):
|
|
return LibertyProvider.objects.idp_enabled().exists()
|
|
|
|
def id(self):
|
|
return 'saml2'
|
|
|
|
def name(self):
|
|
return gettext_noop('SAML 2.0')
|
|
|
|
def form(self):
|
|
return forms.AuthSAML2Form
|
|
|
|
def post(self, request, form, nonce, next):
|
|
entity_id = form.cleaned_data['entity_id']
|
|
query = urllib.urlencode({
|
|
'entity_id': entity_id,
|
|
REDIRECT_FIELD_NAME: next
|
|
})
|
|
return HttpResponseRedirect('/authsaml2/sso?%s' % query)
|
|
|
|
def get_context(self):
|
|
'''Specific context variable used by the specific template'''
|
|
qs = LibertyProvider.objects.idp_enabled().order_by('name')
|
|
choices = forms.provider_list_to_choices(qs)
|
|
return { 'idp_providers': choices }
|
|
|
|
def template(self):
|
|
return 'authsaml2/login_form.html'
|
|
|
|
def profile(self, request):
|
|
return views_profile.profile(request)
|