From 45c1a0c1e3be830a7863fb3d95939cb132847b00 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 8 Nov 2016 09:34:02 +0100 Subject: [PATCH] Regroupement de toutes les gestions d'authentification et de permissions dans [api::Authentification] --- build/api/core/Authentification.php | 37 ++++++++++++++++++++++------- build/api/core/ModuleRequest.php | 23 ++---------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/build/api/core/Authentification.php b/build/api/core/Authentification.php index 5806f62..867df20 100644 --- a/build/api/core/Authentification.php +++ b/build/api/core/Authentification.php @@ -3,6 +3,7 @@ namespace api\core; use \database\core\Repo; + use \error\core\Error; @@ -129,12 +130,13 @@ /* VERIFICATION DES ACCES EN FONCTION DE PERMISSIONS ATTENDUES * + * @module Module concerné * @expected Liste des permissions attendues * * @return status Si FALSE, pas la permission, sinon si * */ - public static function permission($expected){ + public static function permission($module, $expected){ /* [0] Mise à jour de l'authentification =========================================================*/ // self::check(); @@ -146,12 +148,12 @@ /* (1) Si entrepot requis, mais manquant ---------------------------------------------------------*/ if( in_array('warehouse', $expected) && self::auth() < 1 ) - return false; + return Error::PermissionError; /* (2) Si admin requis, mais manquant ---------------------------------------------------------*/ if( in_array('admin', $expected) && self::auth() < 2 ) - return false; + return Error::PermissionError; /* (3) On retire 'warehouse' et 'admin' de @expected ---------------------------------------------------------*/ @@ -163,15 +165,32 @@ /* [2] Gestion des permissions =========================================================*/ - foreach($expected as $permission) - // Si il manque au minimum une permission, on retourne FALSE - if( !in_array($permission, $_SESSION['PERM']) ) - return false; + /* (1) Vérification de toutes les permissions requises */ + foreach($expected as $permission) + // Si il manque au minimum une permission, on retourne FALSE + if( !in_array($permission, $_SESSION['PERM']) ) + return Error::PermissionError; - /* [3] Si on a toutes les permissions requises + /* [3] Vérification que le module est actif pour l'entrepot =========================================================*/ - return true; + + /* (1) On vérifie que le module est actif dans l'entrepot */ + $allowedModule = isset($_SESSION['WAREHOUSE']['modules']) + && is_array($_SESSION['WAREHOUSE']['modules']) + && in_array($module, $_SESSION['WAREHOUSE']['modules']); + + /* (2) On vérifie si le module est un module "Default" */ + $defaultModule = preg_match('/^(\w+)Default$/', $module); + + /* (3) Si aucune autorisation et pas module "Default" */ + if( !$allowedModule && !$defaultModule ) + return Error::DisabledModule; + + + /* [4] Si on a toutes les permissions requises + =========================================================*/ + return Error::Success; } diff --git a/build/api/core/ModuleRequest.php b/build/api/core/ModuleRequest.php index 921bcbb..10517e0 100755 --- a/build/api/core/ModuleRequest.php +++ b/build/api/core/ModuleRequest.php @@ -376,34 +376,15 @@ /* [2] Vérification des permissions et de l'authentification =========================================================*/ - $granted = Authentification::permission($method['permissions']); + $granted = Authentification::permission($this->path['module'], $method['permissions']); /* (1) On retourne FAUX si aucun droit n'a ete trouve */ - if( !$granted ){ + if( $granted !== Error::Success ){ $this->error = Error::PermissionError; return false; } - /* [3] On vérifie que le module est autorisé - =========================================================*/ - $moduleName = $this->path['module']; - - /* (1) On vérifie que le module est actif dans l'entrepot */ - $allowedModule = isset($_SESSION['WAREHOUSE']['modules']) - && is_array($_SESSION['WAREHOUSE']['modules']) - && in_array($moduleName, $_SESSION['WAREHOUSE']['modules']); - - /* (2) On vérifie si le module est un module "Default" */ - $defaultModule = preg_match('/^(\w+)Default$/', $moduleName); - - /* (3) Si aucune autorisation et pas module "Default" */ - if( !$allowedModule && !$defaultModule ){ - $this->error = Error::DisabledModule; - return false; // On retourne FALSE, si erreur - } - - /* On retourne VRAI si la permission est ok */ return true;