From bc9cb59ce6d7c3a6596e5dd47fe6abed02342a96 Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Tue, 23 Jul 2019 10:09:23 +0100
Subject: [PATCH] FEAT #11266 TIME 0:30 rest route for shortcuts

---
 rest/index.php                          |  1 +
 src/core/controllers/CoreController.php | 46 ++++++++++++++++---------
 2 files changed, 30 insertions(+), 17 deletions(-)

diff --git a/rest/index.php b/rest/index.php
index 794e0c6dd4c..063ce6763bc 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -190,6 +190,7 @@ $app->get('/histories/users/{userSerialId}', \History\controllers\HistoryControl
 
 //Header
 $app->get('/header', \SrcCore\controllers\CoreController::class . ':getHeader');
+$app->get('/shortcuts', \SrcCore\controllers\CoreController::class . ':getShortcuts');
 
 //Home
 $app->get('/home', \Home\controllers\HomeController::class . ':get');
diff --git a/src/core/controllers/CoreController.php b/src/core/controllers/CoreController.php
index 2cd812e0d0a..3cb9b69c218 100755
--- a/src/core/controllers/CoreController.php
+++ b/src/core/controllers/CoreController.php
@@ -83,17 +83,13 @@ class CoreController
         $user = UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id', 'user_id', 'firstname', 'lastname']]);
         $user['groups'] = UserModel::getGroupsByUserId(['userId' => $GLOBALS['userId']]);
         $user['entities'] = UserModel::getEntitiesById(['userId' => $GLOBALS['userId']]);
-        $user['indexingGroups'] = [];
-
-        $shortcuts = [
-            ['id' => 'home']
-        ];
 
         if ($GLOBALS['userId'] == 'superadmin') {
             $menu = ServiceModel::getApplicationServicesByXML(['type' => 'menu']);
             foreach ($menu as $key => $value) {
-                if ($value['id'] == 'index_mlb' && $GLOBALS['userId'] == 'superadmin') {
+                if ($value['id'] == 'index_mlb') {
                     unset($menu[$key]);
+                    break;
                 }
             }
             $menuModules = ServiceModel::getModulesServicesByXML(['type' => 'menu']);
@@ -102,6 +98,28 @@ class CoreController
             $menu = ServiceController::getMenuServicesByUserId(['userId' => $GLOBALS['userId']]);
         }
 
+        return $response->withJson([
+            'user'      => $user,
+            'menu'      => $menu
+        ]);
+    }
+
+    public function getShortcuts(Request $request, Response $response)
+    {
+        $userGroups = UserModel::getGroupsByUserId(['userId' => $GLOBALS['userId']]);
+
+        $shortcuts = [
+            ['id' => 'home']
+        ];
+
+        if ($GLOBALS['userId'] == 'superadmin') {
+            $menu = ServiceModel::getApplicationServicesByXML(['type' => 'menu']);
+            $menuModules = ServiceModel::getModulesServicesByXML(['type' => 'menu']);
+            $menu = array_merge($menu, $menuModules);
+        } else {
+            $menu = ServiceController::getMenuServicesByUserId(['userId' => $GLOBALS['userId']]);
+        }
+
         foreach ($menu as $value) {
             if ($value['id'] == 'admin') {
                 $shortcuts[] = ['id' => 'administration'];
@@ -109,22 +127,16 @@ class CoreController
                 $shortcuts[] = ['id' => 'search'];
             }
         }
-        $indexingGroups = [];
-        foreach ($user['groups'] as $group) {
+        foreach ($userGroups as $group) {
             if ($group['can_index']) {
-                $indexingGroups[] = ['id' => $group['id'], 'label' => $group['group_desc']];
+                $shortcuts[] = [
+                    'id'        => 'indexing',
+                    'groups'    => ['id' => $group['id'], 'label' => $group['group_desc']]
+                ];
             }
         }
-        if (!empty($indexingGroups)) {
-            $shortcuts[] = [
-                'id'        => 'indexing',
-                'groups'    => $indexingGroups
-            ];
-        }
 
         return $response->withJson([
-            'user'      => $user,
-            'menu'      => $menu,
             'shortcuts' => $shortcuts
         ]);
     }
-- 
GitLab