icingaweb2/modules/setup/application/forms/UserGroupBackendPage.php

148 lines
3.9 KiB
PHP

<?php
/* Icinga Web 2 | (c) 2015 Icinga Development Team | GPLv2+ */
namespace Icinga\Module\Setup\Forms;
use Icinga\Application\Config;
use Icinga\Authentication\User\UserBackend;
use Icinga\Data\ResourceFactory;
use Icinga\Forms\Config\UserGroup\LdapUserGroupBackendForm;
use Icinga\Web\Form;
/**
* Wizard page to define user group backend specific details
*/
class UserGroupBackendPage extends Form
{
/**
* The resource configuration to use
*
* @var array
*/
protected $resourceConfig;
/**
* The user backend configuration to use
*
* @var array
*/
protected $backendConfig;
/**
* Initialize this page
*/
public function init()
{
$this->setName('setup_usergroup_backend');
$this->setTitle($this->translate('User Group Backend', 'setup.page.title'));
$this->addDescription($this->translate(
'To allow Icinga Web 2 to associate users and groups, you\'ll need to provide some further information'
. ' about the LDAP Connection that is already going to be used to locate account details.'
));
}
/**
* Set the resource configuration to use
*
* @param array $config
*
* @return $this
*/
public function setResourceConfig(array $config)
{
$this->resourceConfig = $config;
return $this;
}
/**
* Set the user backend configuration to use
*
* @param array $config
*
* @return $this
*/
public function setBackendConfig(array $config)
{
$this->backendConfig = $config;
return $this;
}
/**
* Return the resource configuration as Config object
*
* @return Config
*/
protected function createResourceConfiguration()
{
$config = new Config();
$config->setSection($this->resourceConfig['name'], $this->resourceConfig);
return $config;
}
/**
* Return the user backend configuration as Config object
*
* @return Config
*/
protected function createBackendConfiguration()
{
$config = new Config();
$backendConfig = $this->backendConfig;
$backendConfig['resource'] = $this->resourceConfig['name'];
$config->setSection($this->backendConfig['name'], $backendConfig);
return $config;
}
/**
* Create and add elements to this form
*
* @param array $formData
*/
public function createElements(array $formData)
{
// LdapUserGroupBackendForm requires these factories to provide valid configurations
ResourceFactory::setConfig($this->createResourceConfiguration());
UserBackend::setConfig($this->createBackendConfiguration());
$backendForm = new LdapUserGroupBackendForm();
$formData['type'] = 'ldap';
$backendForm->create($formData);
$backendForm->getElement('name')->setValue('icingaweb2');
$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')
)
);
}
/**
* Retrieve all form element values
*
* @param bool $suppressArrayNotation Ignored
*
* @return array
*/
public function getValues($suppressArrayNotation = false)
{
$values = parent::getValues();
$values = array_merge($values, $values['backend_form']);
unset($values['backend_form']);
return $values;
}
}