From 02e30d329313a5fbee3b63f1b56893999715cda7 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Wed, 6 Jul 2016 11:32:51 +0200 Subject: [PATCH] =?UTF-8?q?Gestion=20des=20modules=20en=20BDD=20avec=20v?= =?UTF-8?q?=C3=A9rification=20des=20modules=20autoris=C3=A9s=20pour=20un?= =?UTF-8?q?=20entrepot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/modules.json | 32 +++++++++++++++--------------- config/repositories.json | 2 ++ manager/Authentification.php | 18 ++++++++++------- manager/repo/warehouse.php | 38 ++++++++++++++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 23 deletions(-) diff --git a/config/modules.json b/config/modules.json index f067fb0..c1c54b3 100755 --- a/config/modules.json +++ b/config/modules.json @@ -40,6 +40,22 @@ } }, + "download": { + + "multiple": { + "description": "Download des données relatives aux sujets donnés.", + "permissions": ["admin"], + "options": { "download": true }, + "parameters": { + "subjects": { "description": "Identifiants des sujets d'enquêtes à intégrer.", "type": "array", "optional": true }, + "phone": { "description": "Si vaut TRUE, renvoie les sujets cellulaires.", "type": "boolean", "optional": true }, + "facebook": { "description": "Si vaut TRUE, renvoie les sujet facebook.", "type": "boolean", "optional": true }, + "survey": { "description": "Si vaut TRUE, renvoie les sujets ResTIC.", "type": "boolean", "optional": true }, + "all": { "description": "Si vaut TRUE, renvoie tous les sujets enregistrés.", "type": "boolean", "optional": true } + } + } + }, + "authentificationDefault": { "warehouse": { "description": "Connexion de premier niveau : entrepot.", @@ -62,22 +78,6 @@ } }, - "download": { - - "multiple": { - "description": "Download des données relatives aux sujets donnés.", - "permissions": ["admin"], - "options": { "download": true }, - "parameters": { - "subjects": { "description": "Identifiants des sujets d'enquêtes à intégrer.", "type": "array", "optional": true }, - "phone": { "description": "Si vaut TRUE, renvoie les sujets cellulaires.", "type": "boolean", "optional": true }, - "facebook": { "description": "Si vaut TRUE, renvoie les sujet facebook.", "type": "boolean", "optional": true }, - "survey": { "description": "Si vaut TRUE, renvoie les sujets ResTIC.", "type": "boolean", "optional": true }, - "all": { "description": "Si vaut TRUE, renvoie tous les sujets enregistrés.", "type": "boolean", "optional": true } - } - } - }, - "userDefault": { diff --git a/config/repositories.json b/config/repositories.json index 2be9ae0..e5baa81 100755 --- a/config/repositories.json +++ b/config/repositories.json @@ -57,6 +57,8 @@ "getByName", "getByToken", + "getModules", + "updateToken" ], diff --git a/manager/Authentification.php b/manager/Authentification.php index 9cf244d..85cf50b 100644 --- a/manager/Authentification.php +++ b/manager/Authentification.php @@ -78,16 +78,20 @@ if( self::auth() >= 1 ){ $checkRoot = new Repo('warehouse/getByToken', [ $_SESSION['AUTH'][0] ]); - // Si le token n'existe pas + /* (1) Si le token n'existe pas, on retourne une erreur */ if( count($checkRoot->answer()) < 1 ) return false; - // On met à jour les informations + /* (2) On met à jour les informations de l'entrepot */ $_SESSION['WAREHOUSE'] = [ 'id' => (int) $checkRoot->answer()[0]['id_warehouse'], - 'name' => $checkRoot->answer()[0]['name'], - 'modules' => ['upload', 'method'] + 'name' => $checkRoot->answer()[0]['name'] ]; + + /* (3) On récupère les modules de l'entrepot */ + $getModules = new Repo('warehouse/getModules', [ $_SESSION['WAREHOUSE']['id'] ]); + + $_SESSION['WAREHOUSE']['modules'] = $getModules->answer(); } /* [3] Si authentification double @@ -95,15 +99,15 @@ if( self::auth() >= 2 ){ $checkBranch = new Repo('admin/getByToken', [ $_SESSION['AUTH'][1] ]); - // Si le token n'existe pas + /* (1) Si le token n'existe pas, on retourne une erreur */ if( count($checkBranch->answer()) < 1 ) return false; - // Si pas administrateur de l'entrepot + /* (2) Si pas administrateur de l'entrepot, on retourne une erreur */ if( $checkBranch->answer()[0]['id_warehouse'] != $_SESSION['WAREHOUSE']['id'] ) return false; - // On met à jour les informations + /* (3) On met à jour les informations de l'administrateur */ $_SESSION['ADMIN'] = [ 'id' => (int) $checkBranch->answer()[0]['id_admin'], 'username' => $checkBranch->answer()[0]['username'], diff --git a/manager/repo/warehouse.php b/manager/repo/warehouse.php index 916ff54..82f30b9 100644 --- a/manager/repo/warehouse.php +++ b/manager/repo/warehouse.php @@ -100,6 +100,44 @@ + /* RETOURNE LA LISTE DES MODULE D'UN ENTREPOT + * + * @return modules Liste des modules autorisés pour l'entrepot + * + */ + public static function getModules($id_warehouse){ + /* [1] On récupère les modules + =========================================================*/ + $getModules = Database::getPDO()->prepare("SELECT m.name + FROM warehouse_module as wm, module as m + WHERE wm.id_module = m.id_module + AND wm.id_warehouse = :id_warehouse + ORDER BY m.name ASC"); + + $getModules->execute([ + ':id_warehouse' => $id_warehouse + ]); + + $modules = $getModules->fetchAll(); + + /* [2] On formatte les données pour avoir 1 niveau de tableau + =========================================================*/ + foreach($modules as $m=>$module) + $modules[$m] = $module['name']; + + + /* [3] On retourne la liste + =========================================================*/ + return Database::delNumeric( $modules ); + } + + + + + + + + /* MODIFICATION D'UN ENTREPOT * * @id_warehouse UID de l'entrepot