wip/74969-auth-oidc-masquer-les-options-ho (#74969) #47

Merged
pmarillonnet merged 3 commits from wip/74969-auth-oidc-masquer-les-options-ho into main 2023-05-02 11:57:13 +02:00
5 changed files with 50 additions and 29 deletions

View File

@ -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

View File

@ -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 %}

View File

@ -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)

View File

@ -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):

View File

@ -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')