wip/74969-auth-oidc-masquer-les-options-ho (#74969) #47
|
@ -50,7 +50,11 @@ class AuthenticatorEdit(AuthenticatorEvents):
|
|||
|
||||
@classmethod
|
||||
def record(cls, *, user, session, forms):
|
||||
data = {k: v for form in forms for k, v in form_to_old_new(form).items()}
|
||||
data = form_to_old_new(forms[0])
|
||||
for form in forms[1:]:
|
||||
old_new = form_to_old_new(form)
|
||||
data['old'].update(old_new['old'])
|
||||
data['new'].update(old_new['new'])
|
||||
super().record(user=user, session=session, authenticator=forms[0].instance, data=data)
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="pk-tabs">
|
||||
{% if forms|length > 1 %}
|
||||
{% if forms|length > 1 %}
|
||||
<div class="pk-tabs">
|
||||
<div class="pk-tabs--tab-list" role="tablist" aria-label="{% trans "Configuration tabs" %}">
|
||||
{% for form in forms %}
|
||||
<button role="tab"
|
||||
|
@ -20,27 +20,27 @@
|
|||
{% if form.is_not_default %}class="pk-tabs--button-marker"{% endif %}>{{ form.tab_name }}</button>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
||||
<form method="post" {% if forms|length > 1 %}class="pk-tabs--container"{% endif %} enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
{% if forms|length > 1 %}
|
||||
{% for form in forms %}
|
||||
<div id="panel-{{ form.tab_slug }}"
|
||||
role="tabpanel" tabindex="0" {% if not forloop.first %}hidden{% endif %}
|
||||
data-tab-slug="{{ form.tab_slug }}"
|
||||
aria-labelledby="tab-{{ form.tab_slug }}">
|
||||
{{ form|with_template }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{{ forms.0|with_template }}
|
||||
{% endif %}
|
||||
|
||||
|
||||
<form method="post" {% if forms|length > 1 %}class="pk-tabs--container"{% endif %} enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
{% if forms|length > 1 %}
|
||||
{% for form in forms %}
|
||||
<div id="panel-{{ form.tab_slug }}"
|
||||
role="tabpanel" tabindex="0" {% if not forloop.first %}hidden{% endif %}
|
||||
data-tab-slug="{{ form.tab_slug }}"
|
||||
aria-labelledby="tab-{{ form.tab_slug }}">
|
||||
{{ form|with_template }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{{ forms.0|with_template }}
|
||||
{% endif %}
|
||||
<div class="buttons">
|
||||
<button>{% trans "Save" %}</button>
|
||||
<a class="cancel" href="{% url 'a2-manager-authenticator-detail' pk=object.pk %}">{% trans 'Cancel' %}</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<button>{% trans "Save" %}</button>
|
||||
<a class="cancel" href="{% url 'a2-manager-authenticator-detail' pk=object.pk %}">{% trans 'Cancel' %}</a>
|
||||
</div>
|
||||
</form>
|
||||
{% if forms|length > 1 %}</div>{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -25,7 +25,11 @@ from .models import OIDCClaimMapping, OIDCProvider
|
|||
class OIDCProviderEditForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = OIDCProvider
|
||||
fields = '__all__'
|
||||
exclude = (
|
||||
'max_auth_age',
|
||||
'passive_authn_supported',
|
||||
'a2_synchronization_supported',
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
@ -33,6 +37,12 @@ class OIDCProviderEditForm(forms.ModelForm):
|
|||
self.fields['ou'].empty_label = None
|
||||
|
||||
|
||||
class OIDCProviderAdvancedForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = OIDCProvider
|
||||
fields = OIDCProviderEditForm.Meta.exclude
|
||||
|
||||
|
||||
class OIDCClaimTextInput(DatalistTextInput):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
|
|
@ -158,10 +158,13 @@ class OIDCProvider(BaseAuthenticator):
|
|||
]
|
||||
|
||||
@property
|
||||
def manager_form_class(self):
|
||||
from .forms import OIDCProviderEditForm
|
||||
def manager_form_classes(self):
|
||||
from .forms import OIDCProviderAdvancedForm, OIDCProviderEditForm
|
||||
|
||||
return OIDCProviderEditForm
|
||||
return [
|
||||
(_('General'), OIDCProviderEditForm),
|
||||
(_('Advanced'), OIDCProviderAdvancedForm),
|
||||
]
|
||||
|
||||
@property
|
||||
def related_object_form_class(self):
|
||||
|
|
|
@ -501,6 +501,10 @@ def test_authenticators_saml(app, superuser, ou1, ou2):
|
|||
resp = resp.click('Edit')
|
||||
assert resp.pyquery('button#tab-advanced').attr('class') == 'pk-tabs--button-marker'
|
||||
|
||||
resp = app.get(authenticator.get_absolute_url())
|
||||
resp = resp.click('Journal')
|
||||
assert 'edit (metadata_url)' in resp.text
|
||||
|
||||
|
||||
def test_authenticators_saml_hide_metadata_url_advanced_fields(app, superuser, ou1, ou2):
|
||||
authenticator = SAMLAuthenticator.objects.create(slug='idp1')
|
||||
|
|
Loading…
Reference in New Issue