refactor(admin): split SSO tab into separate Microsoft SSO and LDAP tabs

Replace the single "SSO" tab in tenant edit with two dedicated tabs:
"Microsoft SSO" and "LDAP". Each provider now has its own tab panel
with focused status tiles and config cards, reducing scroll and
cognitive load for admins configuring a single provider.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-25 07:48:13 +01:00
parent 6be97205f3
commit a721ec0043
3 changed files with 9 additions and 5 deletions

View File

@@ -1413,5 +1413,6 @@
"Use %s as placeholder for the username. Examples: (&(objectClass=user)(sAMAccountName=%s)) for AD, (&(objectClass=inetOrgPerson)(uid=%s)) for OpenLDAP": "Verwenden Sie %s als Platzhalter für den Benutzernamen. Beispiele: (&(objectClass=user)(sAMAccountName=%s)) für AD, (&(objectClass=inetOrgPerson)(uid=%s)) für OpenLDAP",
"Username or password not valid": "Benutzername oder Passwort ungültig",
"Write-only. Leave empty to keep current value.": "Nur Schreibzugriff. Leer lassen, um den aktuellen Wert beizubehalten.",
"Your account is deactivated.": "Ihr Konto ist deaktiviert."
"Your account is deactivated.": "Ihr Konto ist deaktiviert.",
"LDAP": "LDAP"
}

View File

@@ -1413,5 +1413,6 @@
"Use %s as placeholder for the username. Examples: (&(objectClass=user)(sAMAccountName=%s)) for AD, (&(objectClass=inetOrgPerson)(uid=%s)) for OpenLDAP": "Use %s as placeholder for the username. Examples: (&(objectClass=user)(sAMAccountName=%s)) for AD, (&(objectClass=inetOrgPerson)(uid=%s)) for OpenLDAP",
"Username or password not valid": "Username or password not valid",
"Write-only. Leave empty to keep current value.": "Write-only. Leave empty to keep current value.",
"Your account is deactivated.": "Your account is deactivated."
"Your account is deactivated.": "Your account is deactivated.",
"LDAP": "LDAP"
}

View File

@@ -151,7 +151,8 @@ $openOverrideCard = $detailsOpenAll;
<button type="button" data-tab="custom_fields"><?php e(t('User custom fields')); ?></button>
<?php endif; ?>
<?php if ($showSsoTab): ?>
<button type="button" data-tab="sso"><?php e(t('SSO')); ?></button>
<button type="button" data-tab="sso"><?php e(t('Microsoft SSO')); ?></button>
<button type="button" data-tab="ldap"><?php e(t('LDAP')); ?></button>
<?php endif; ?>
<button type="button" data-tab="visibility"><?php e(t('Visibility')); ?></button>
<?php if ($showDangerZone && $dangerZoneDeleteFormId !== ''): ?>
@@ -679,6 +680,9 @@ $openOverrideCard = $detailsOpenAll;
</div>
</details>
</div>
<div data-tab-panel="ldap">
<?php
// ── LDAP configuration section ────────────────────────────────
$ldapUiState = is_array($ldapUiState ?? null) ? $ldapUiState : [];
@@ -712,9 +716,7 @@ $openOverrideCard = $detailsOpenAll;
$ldapConfigErrorLabel = trim((string) ($ldapUiState['config_error_label'] ?? ''));
$openLdapSetupCard = $detailsOpenAll || !$ldapEnabled || ($ldapEnabled && !$ldapConfigComplete);
?>
<hr>
<div data-tenant-ldap-root>
<h4><?php e(t('LDAP Authentication')); ?></h4>
<div class="app-form-info-tiles">
<?php