From 33ee3eaa838a9588127c67423f1470b52511cc76 Mon Sep 17 00:00:00 2001 From: Thierry Bugier Date: Thu, 2 Dec 2021 13:30:26 +0100 Subject: [PATCH] feat(issue): access to admins Signed-off-by: Thierry Bugier --- hook.php | 11 ++++++++--- inc/form.class.php | 5 ++++- tests/4-functional/PluginFormcreatorForm.php | 6 ++++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/hook.php b/hook.php index 35ca25343..c7d02e4db 100644 --- a/hook.php +++ b/hook.php @@ -127,20 +127,25 @@ function plugin_formcreator_addDefaultWhere($itemtype) { $currentUser = Session::getLoginUserID(); switch ($itemtype) { case PluginFormcreatorIssue::class: + if (Session::haveRight(Entity::$rightname, UPDATE)) { + // The user is a Formcreator administrator + return ''; + } + // Simplified interface or service catalog // Use default where from Tickets $condition = Search::addDefaultWhere(Ticket::class); if ($condition != '') { // Replace references to ticket tables with issues table $condition = str_replace('`glpi_tickets`', '`glpi_plugin_formcreator_issues`', $condition); $condition = str_replace('`users_id_recipient`', '`requester_id`', $condition); - // $condition .= ' OR '; + $condition .= ' OR '; } // condition where current user is a validator of the issue if (Plugin::isPluginActive('advform')) { $complexJoinId = Search::computeComplexJoinID(Search::getOptions($itemtype)[9]['joinparams']); - $condition .= " OR `glpi_users_$complexJoinId`.`id` = '$currentUser'"; + $condition .= "`glpi_users_$complexJoinId`.`id` = '$currentUser'"; } else { - $condition .= " OR `glpi_plugin_formcreator_issues`.`users_id_validator` = '$currentUser'"; + $condition .= "`glpi_plugin_formcreator_issues`.`users_id_validator` = '$currentUser'"; } // condition where current user is a member of a validator group of the issue $groupList = []; diff --git a/inc/form.class.php b/inc/form.class.php index b99e9fe33..f97942b99 100644 --- a/inc/form.class.php +++ b/inc/form.class.php @@ -119,10 +119,13 @@ public static function getMenuContent() { title="' . __('Forms waiting for validation', 'formcreator') . '">'; $import_image = ''; + $requests_image = ''; + $menu['links']['search'] = PluginFormcreatorFormList::getSearchURL(false); $menu['links'][$validation_image] = PluginFormcreatorFormAnswer::getSearchURL(false); $menu['links'][$import_image] = PluginFormcreatorForm::getFormURL(false)."?import_form=1"; - + $menu['links'][$requests_image] = PluginFormcreatorIssue::getSearchURL(false); return $menu; } diff --git a/tests/4-functional/PluginFormcreatorForm.php b/tests/4-functional/PluginFormcreatorForm.php index 2f0a40b43..615150f17 100644 --- a/tests/4-functional/PluginFormcreatorForm.php +++ b/tests/4-functional/PluginFormcreatorForm.php @@ -257,4 +257,10 @@ public function testVisibilityByLanguage() { $output = $this->crawler->filter($formTileSelector); $this->integer(count($output))->isEqualTo(0); } + + public function testAcessToIssuesFromAdmin() { + $this->crawler = $this->client->request('GET', '/' . Plugin::getWebDir('formcreator', false) . '/front/form.php'); + $href = '/' . Plugin::getWebDir('formcreator', false) . '/front/issue.php'; + $this->client->waitForVisibility('header li.nav-item a[href="' . $href . '"]'); + } }