Hide non-essential form fields when configuring LDAP user group backends

resolves #9780
This commit is contained in:
Johannes Meyer 2015-07-31 15:56:13 +02:00
parent 5a3401cc28
commit dafa722cec
2 changed files with 28 additions and 26 deletions

View File

@ -75,10 +75,12 @@ class LdapUserGroupBackendForm extends Form
: $resourceNames[0] : $resourceNames[0]
); );
$userBackends = array('none' => $this->translate('None', 'usergroupbackend.ldap.user_backend'));
$userBackendNames = $this->getLdapUserBackendNames($resource); $userBackendNames = $this->getLdapUserBackendNames($resource);
if (! empty($userBackendNames)) { if (! empty($userBackendNames)) {
$userBackends = array_merge($userBackends, array_combine($userBackendNames, $userBackendNames)); $userBackends = array_combine($userBackendNames, $userBackendNames);
$userBackends['none'] = $this->translate('None', 'usergroupbackend.ldap.user_backend');
} else {
$userBackends = array('none' => $this->translate('None', 'usergroupbackend.ldap.user_backend'));
} }
$this->addElement( $this->addElement(
'select', 'select',
@ -101,20 +103,10 @@ class LdapUserGroupBackendForm extends Form
$groupConfigDisabled = $userConfigDisabled = true; $groupConfigDisabled = $userConfigDisabled = true;
} }
$dnDisabled = null; // MUST BE null
if (isset($formData['user_backend']) && $formData['user_backend'] !== 'none') {
$userBackend = UserBackend::create($formData['user_backend']);
$defaults->merge(array(
'user_base_dn' => $userBackend->getBaseDn(),
'user_class' => $userBackend->getUserClass(),
'user_name_attribute' => $userBackend->getUserNameAttribute(),
'user_filter' => $userBackend->getFilter()
));
$userConfigDisabled = $dnDisabled = true;
}
$this->createGroupConfigElements($defaults, $groupConfigDisabled); $this->createGroupConfigElements($defaults, $groupConfigDisabled);
$this->createUserConfigElements($defaults, $userConfigDisabled, $dnDisabled); if (count($userBackends) === 1 || (isset($formData['user_backend']) && $formData['user_backend'] === 'none')) {
$this->createUserConfigElements($defaults, $userConfigDisabled);
}
$this->addElement( $this->addElement(
'hidden', 'hidden',
@ -212,9 +204,8 @@ class LdapUserGroupBackendForm extends Form
* *
* @param ConfigObject $defaults * @param ConfigObject $defaults
* @param null|bool $disabled * @param null|bool $disabled
* @param null|bool $dnDisabled
*/ */
protected function createUserConfigElements(ConfigObject $defaults, $disabled, $dnDisabled) protected function createUserConfigElements(ConfigObject $defaults, $disabled)
{ {
$this->addElement( $this->addElement(
'text', 'text',
@ -234,8 +225,6 @@ class LdapUserGroupBackendForm extends Form
array( array(
'preserveDefault' => true, 'preserveDefault' => true,
'allowEmpty' => true, 'allowEmpty' => true,
'ignore' => $dnDisabled,
'disabled' => $dnDisabled,
'label' => $this->translate('LDAP User Filter'), 'label' => $this->translate('LDAP User Filter'),
'description' => $this->translate( 'description' => $this->translate(
'An additional filter to use when looking up users using the specified connection. ' 'An additional filter to use when looking up users using the specified connection. '
@ -281,8 +270,6 @@ class LdapUserGroupBackendForm extends Form
'user_base_dn', 'user_base_dn',
array( array(
'preserveDefault' => true, 'preserveDefault' => true,
'ignore' => $dnDisabled,
'disabled' => $dnDisabled,
'label' => $this->translate('LDAP User Base DN'), 'label' => $this->translate('LDAP User Base DN'),
'description' => $this->translate( 'description' => $this->translate(
'The path where users can be found on the LDAP server. Leave ' . 'The path where users can be found on the LDAP server. Leave ' .

View File

@ -104,15 +104,30 @@ class UserGroupBackendPage extends Form
ResourceFactory::setConfig($this->createResourceConfiguration()); ResourceFactory::setConfig($this->createResourceConfiguration());
UserBackend::setConfig($this->createBackendConfiguration()); UserBackend::setConfig($this->createBackendConfiguration());
$formData['type'] = 'ldap';
$formData['user_backend'] = $this->backendConfig['name']; // We're forcing the linkage anyway..
$backendForm = new LdapUserGroupBackendForm(); $backendForm = new LdapUserGroupBackendForm();
$formData['type'] = 'ldap';
$backendForm->create($formData); $backendForm->create($formData);
$userBackendOptions = $backendForm->getElement('user_backend')->getMultiOptions();
unset($userBackendOptions['none']);
$backendForm->getElement('name')->setValue('icingaweb2'); $backendForm->getElement('name')->setValue('icingaweb2');
$backendForm->getElement('user_backend')->setMultiOptions($userBackendOptions);
$this->addSubForm($backendForm, 'backend_form'); $this->addSubForm($backendForm, 'backend_form');
$backendForm->addElement(
'hidden',
'resource',
array(
'required' => true,
'value' => $this->resourceConfig['name'],
'decorators' => array('ViewHelper')
)
);
$backendForm->addElement(
'hidden',
'user_backend',
array(
'required' => true,
'value' => $this->backendConfig['name'],
'decorators' => array('ViewHelper')
)
);
} }
/** /**