From 7fcef19c6ebc22e9e91c6ddd23ad5c833eb581f3 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Tue, 17 Nov 2015 14:46:50 +0100 Subject: [PATCH] permissions: provide a few --- application/controllers/ProcessController.php | 2 ++ application/views/scripts/process/show.phtml | 2 -- configuration.php | 2 ++ library/Businessprocess/Controller.php | 13 ++++++++++++- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/application/controllers/ProcessController.php b/application/controllers/ProcessController.php index dd56855..dbbd82d 100644 --- a/application/controllers/ProcessController.php +++ b/application/controllers/ProcessController.php @@ -20,6 +20,8 @@ class ProcessController extends Controller */ public function createAction() { + $this->assertPermission('businessprocess/create'); + $this->setTitle($this->translate('Create a new business process')); $this->tabsForCreate()->activate('create'); diff --git a/application/views/scripts/process/show.phtml b/application/views/scripts/process/show.phtml index c3bf5eb..4ee8336 100644 --- a/application/views/scripts/process/show.phtml +++ b/application/views/scripts/process/show.phtml @@ -19,8 +19,6 @@ use Icinga\Module\Businessprocess\BusinessProcess; icon('wrench') ?> -icon('plus') ?> - diff --git a/configuration.php b/configuration.php index a94fedc..6d4b89a 100644 --- a/configuration.php +++ b/configuration.php @@ -5,3 +5,5 @@ $section = $this->menuSection(N_('Overview')) ->setPriority(45) ->setUrl('businessprocess'); +$this->providePermission('businessprocess/create', 'Allow to create new configs'); +$this->providePermission('businessprocess/modify', 'Allow to modify processes'); diff --git a/library/Businessprocess/Controller.php b/library/Businessprocess/Controller.php index d961dd9..5994f7c 100644 --- a/library/Businessprocess/Controller.php +++ b/library/Businessprocess/Controller.php @@ -85,7 +85,14 @@ class Controller extends ModuleController protected function loadBpConfig() { $storage = $this->storage(); - $this->view->processList = $storage->listProcesses(); + if ($this->hasPermission('businessprocess/create')) { + $this->view->processList = array_merge( + $storage->listProcesses(), + array('.new' => $this->translate('Create new configuration')) + ); + } else { + $this->view->processList = $storage->listProcesses(); + } // No process found? Go to welcome page if (empty($this->view->processList)) { @@ -97,6 +104,10 @@ class Controller extends ModuleController key($this->view->processList) ); + if ($name === '.new') { + $this->redirectNow('businessprocess/process/create'); + } + $modifications = $this->session()->get('modifications', array()); if (array_key_exists($name, $modifications)) { $bp = $storage->loadFromString($name, $modifications[$name]);