providers/saml: remove processor_path field

This commit is contained in:
Jens Langhammer 2020-07-11 13:28:03 +02:00
parent 92a09be8c0
commit 1b0c013d8e
5 changed files with 3 additions and 58 deletions

View File

@ -14,7 +14,6 @@ class SAMLProviderSerializer(ModelSerializer):
fields = [ fields = [
"pk", "pk",
"name", "name",
"processor_path",
"acs_url", "acs_url",
"audience", "audience",
"issuer", "issuer",

View File

@ -1,26 +1,12 @@
"""passbook mod saml_idp app config""" """passbook SAML IdP app config"""
from importlib import import_module
from django.apps import AppConfig from django.apps import AppConfig
from django.conf import settings
from structlog import get_logger
LOGGER = get_logger()
class PassbookProviderSAMLConfig(AppConfig): class PassbookProviderSAMLConfig(AppConfig):
"""passbook saml_idp app config""" """passbook SAML IdP app config"""
name = "passbook.providers.saml" name = "passbook.providers.saml"
label = "passbook_providers_saml" label = "passbook_providers_saml"
verbose_name = "passbook Providers.SAML" verbose_name = "passbook Providers.SAML"
mountpoint = "application/saml/" mountpoint = "application/saml/"
def ready(self):
"""Load source_types from config file"""
for source_type in settings.PASSBOOK_PROVIDERS_SAML_PROCESSORS:
try:
import_module(source_type)
LOGGER.info("Loaded SAML Processor", processor_class=source_type)
except ImportError as exc:
LOGGER.debug(exc)

View File

@ -8,11 +8,7 @@ from django.utils.translation import gettext as _
from passbook.admin.fields import CodeMirrorWidget from passbook.admin.fields import CodeMirrorWidget
from passbook.core.expression import PropertyMappingEvaluator from passbook.core.expression import PropertyMappingEvaluator
from passbook.flows.models import Flow, FlowDesignation from passbook.flows.models import Flow, FlowDesignation
from passbook.providers.saml.models import ( from passbook.providers.saml.models import SAMLPropertyMapping, SAMLProvider
SAMLPropertyMapping,
SAMLProvider,
get_provider_choices,
)
class SAMLProviderForm(forms.ModelForm): class SAMLProviderForm(forms.ModelForm):
@ -21,9 +17,6 @@ class SAMLProviderForm(forms.ModelForm):
authorization_flow = forms.ModelChoiceField( authorization_flow = forms.ModelChoiceField(
queryset=Flow.objects.filter(designation=FlowDesignation.AUTHORIZATION) queryset=Flow.objects.filter(designation=FlowDesignation.AUTHORIZATION)
) )
processor_path = forms.ChoiceField(
choices=get_provider_choices(), label="Processor"
)
class Meta: class Meta:
@ -31,7 +24,6 @@ class SAMLProviderForm(forms.ModelForm):
fields = [ fields = [
"name", "name",
"authorization_flow", "authorization_flow",
"processor_path",
"acs_url", "acs_url",
"audience", "audience",
"issuer", "issuer",

View File

@ -9,9 +9,7 @@ from structlog import get_logger
from passbook.core.models import PropertyMapping, Provider from passbook.core.models import PropertyMapping, Provider
from passbook.crypto.models import CertificateKeyPair from passbook.crypto.models import CertificateKeyPair
from passbook.lib.utils.reflection import class_to_path, path_to_class
from passbook.lib.utils.template import render_to_string from passbook.lib.utils.template import render_to_string
from passbook.providers.saml.processors.base import Processor
from passbook.providers.saml.utils.time import timedelta_string_validator from passbook.providers.saml.utils.time import timedelta_string_validator
LOGGER = get_logger() LOGGER = get_logger()
@ -28,7 +26,6 @@ class SAMLProvider(Provider):
"""SAML 2.0 Endpoint for applications which support SAML.""" """SAML 2.0 Endpoint for applications which support SAML."""
name = models.TextField() name = models.TextField()
processor_path = models.CharField(max_length=255, choices=[])
acs_url = models.URLField(verbose_name=_("ACS URL")) acs_url = models.URLField(verbose_name=_("ACS URL"))
audience = models.TextField(default="") audience = models.TextField(default="")
@ -105,22 +102,6 @@ class SAMLProvider(Provider):
) )
form = "passbook.providers.saml.forms.SAMLProviderForm" form = "passbook.providers.saml.forms.SAMLProviderForm"
_processor = None
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._meta.get_field("processor_path").choices = get_provider_choices()
@property
def processor(self) -> Optional[Processor]:
"""Return selected processor as instance"""
if not self._processor:
try:
self._processor = path_to_class(self.processor_path)(self)
except ImportError as exc:
LOGGER.warning(exc)
self._processor = None
return self._processor
def __str__(self): def __str__(self):
return self.name return self.name
@ -171,10 +152,3 @@ class SAMLPropertyMapping(PropertyMapping):
verbose_name = _("SAML Property Mapping") verbose_name = _("SAML Property Mapping")
verbose_name_plural = _("SAML Property Mappings") verbose_name_plural = _("SAML Property Mappings")
def get_provider_choices():
"""Return tuple of class_path, class name of all providers."""
return [
(class_to_path(x), x.__name__) for x in getattr(Processor, "__subclasses__")()
]

View File

@ -6154,7 +6154,6 @@ definitions:
SAMLProvider: SAMLProvider:
required: required:
- name - name
- processor_path
- acs_url - acs_url
- issuer - issuer
type: object type: object
@ -6167,11 +6166,6 @@ definitions:
title: Name title: Name
type: string type: string
minLength: 1 minLength: 1
processor_path:
title: Processor path
type: string
maxLength: 255
minLength: 1
acs_url: acs_url:
title: ACS URL title: ACS URL
type: string type: string