Combine the lists of user and group backends

refs #10309
This commit is contained in:
Alexander A. Klimov 2016-02-17 18:43:26 +01:00
parent 6c39fb51f8
commit 88ff055f39
4 changed files with 59 additions and 89 deletions

View File

@ -169,16 +169,18 @@ class ConfigController extends Controller
} }
/** /**
* Action for listing and reordering user backends * Action for listing user and group backends
*/ */
public function userbackendAction() public function userbackendAction()
{ {
$this->assertPermission('config/application/userbackend'); $this->assertPermission('config/application/userbackend');
$this->assertPermission('config/application/usergroupbackend');
$form = new UserBackendReorderForm(); $form = new UserBackendReorderForm();
$form->setIniConfig(Config::app('authentication')); $form->setIniConfig(Config::app('authentication'));
$form->handleRequest(); $form->handleRequest();
$this->view->form = $form; $this->view->form = $form;
$this->view->backendNames = Config::app('groups');
$this->createApplicationTabs()->activate('authentication'); $this->createApplicationTabs()->activate('authentication');
$this->render('userbackend/reorder'); $this->render('userbackend/reorder');
} }

View File

@ -29,16 +29,7 @@ class UsergroupbackendController extends Controller
*/ */
public function indexAction() public function indexAction()
{ {
$this->redirectNow('usergroupbackend/list'); $this->redirectNow('config/userbackend');
}
/**
* Show a list of all user group backends
*/
public function listAction()
{
$this->view->backendNames = Config::app('groups');
$this->createListTabs()->activate('usergroupbackend');
} }
/** /**
@ -47,7 +38,7 @@ class UsergroupbackendController extends Controller
public function createAction() public function createAction()
{ {
$form = new UserGroupBackendForm(); $form = new UserGroupBackendForm();
$form->setRedirectUrl('usergroupbackend/list'); $form->setRedirectUrl('config/userbackend');
$form->addDescription($this->translate('Create a new backend to associate users and groups with.')); $form->addDescription($this->translate('Create a new backend to associate users and groups with.'));
$form->setIniConfig(Config::app('groups')); $form->setIniConfig(Config::app('groups'));
$form->setOnSuccess(function (UserGroupBackendForm $form) { $form->setOnSuccess(function (UserGroupBackendForm $form) {
@ -78,7 +69,7 @@ class UsergroupbackendController extends Controller
$backendName = $this->params->getRequired('backend'); $backendName = $this->params->getRequired('backend');
$form = new UserGroupBackendForm(); $form = new UserGroupBackendForm();
$form->setRedirectUrl('usergroupbackend/list'); $form->setRedirectUrl('config/userbackend');
$form->setIniConfig(Config::app('groups')); $form->setIniConfig(Config::app('groups'));
$form->setOnSuccess(function (UserGroupBackendForm $form) use ($backendName) { $form->setOnSuccess(function (UserGroupBackendForm $form) use ($backendName) {
try { try {
@ -121,7 +112,7 @@ class UsergroupbackendController extends Controller
$backendForm = new UserGroupBackendForm(); $backendForm = new UserGroupBackendForm();
$backendForm->setIniConfig(Config::app('groups')); $backendForm->setIniConfig(Config::app('groups'));
$form = new ConfirmRemovalForm(); $form = new ConfirmRemovalForm();
$form->setRedirectUrl('usergroupbackend/list'); $form->setRedirectUrl('config/userbackend');
$form->setOnSuccess(function (ConfirmRemovalForm $form) use ($backendName, $backendForm) { $form->setOnSuccess(function (ConfirmRemovalForm $form) use ($backendName, $backendForm) {
try { try {
$backendForm->delete($backendName); $backendForm->delete($backendName);
@ -141,23 +132,4 @@ class UsergroupbackendController extends Controller
$this->renderForm($form, $this->translate('Remove User Group Backend')); $this->renderForm($form, $this->translate('Remove User Group Backend'));
} }
/**
* Create the tabs for the application configuration
*/
protected function createListTabs()
{
$tabs = $this->getTabs();
$tabs->add('userbackend', array(
'title' => $this->translate('Configure how users authenticate with and log into Icinga Web 2'),
'label' => $this->translate('Users'),
'url' => 'config/userbackend'
));
$tabs->add('usergroupbackend', array(
'title' => $this->translate('Configure how users are associated with groups by Icinga Web 2'),
'label' => $this->translate('User Groups'),
'url' => 'usergroupbackend/list'
));
return $tabs;
}
} }

View File

@ -14,4 +14,56 @@
) )
) ?> ) ?>
<?= $form ?> <?= $form ?>
<?= $this->qlink(
$this->translate('Create a New User Group Backend') ,
'usergroupbackend/create',
null,
array(
'class' => 'button-link',
'data-base-target' => '_next',
'icon' => 'plus',
'title' => $this->translate('Create a new user group backend')
)
) ?>
<?php if (! count($backendNames)) { return; } ?>
<table class="table-row-selectable common-table" data-base-target="_next">
<thead>
<tr>
<th><?= $this->translate('Backend') ?></th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach ($backendNames as $backendName => $config):
$type = $config->get('backend');
?>
<tr>
<td>
<?= $this->qlink(
$backendName,
'usergroupbackend/edit',
array('backend' => $backendName),
array(
'icon' => $type === 'external' ? 'magic' : ($type === 'ldap' || $type === 'msldap' ? 'sitemap' : 'database'),
'title' => sprintf($this->translate('Edit user group backend %s'), $backendName)
)
); ?>
</td>
<td class="icon-col text-right">
<?= $this->qlink(
null,
'usergroupbackend/remove',
array('backend' => $backendName),
array(
'class' => 'action-link',
'icon' => 'cancel',
'title' => sprintf($this->translate('Remove user group backend %s'), $backendName)
)
) ?>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div> </div>

View File

@ -1,56 +0,0 @@
<div class="controls">
<?= $tabs ?>
</div>
<div class="content">
<?= $this->qlink(
$this->translate('Create a New User Group Backend') ,
'usergroupbackend/create',
null,
array(
'class' => 'button-link',
'data-base-target' => '_next',
'icon' => 'plus',
'title' => $this->translate('Create a new user group backend')
)
) ?>
<?php if (! count($backendNames)) { return; } ?>
<table class="table-row-selectable common-table" data-base-target="_next">
<thead>
<tr>
<th><?= $this->translate('Backend') ?></th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach ($backendNames as $backendName => $config):
$type = $config->get('backend');
?>
<tr>
<td>
<?= $this->qlink(
$backendName,
'usergroupbackend/edit',
array('backend' => $backendName),
array(
'icon' => $type === 'external' ? 'magic' : ($type === 'ldap' || $type === 'msldap' ? 'sitemap' : 'database'),
'title' => sprintf($this->translate('Edit user group backend %s'), $backendName)
)
); ?>
</td>
<td class="icon-col text-right">
<?= $this->qlink(
null,
'usergroupbackend/remove',
array('backend' => $backendName),
array(
'class' => 'action-link',
'icon' => 'cancel',
'title' => sprintf($this->translate('Remove user group backend %s'), $backendName)
)
) ?>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>