From 6458f831aa7fb8ee991a4e077cc51b0040f0829a Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Wed, 6 Jul 2016 11:10:21 +0200 Subject: [PATCH] =?UTF-8?q?Gestion=20des=20modules=20autoris=C3=A9s,=20ges?= =?UTF-8?q?tion=20en=20BDD=20=C3=A0=20faire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manager/Authentification.php | 5 +++-- manager/ManagerError.php | 36 ++++++++++++++++++++---------------- manager/ModuleRequest.php | 15 +++++++++++++-- 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/manager/Authentification.php b/manager/Authentification.php index 8050127..9cf244d 100644 --- a/manager/Authentification.php +++ b/manager/Authentification.php @@ -84,8 +84,9 @@ // On met à jour les informations $_SESSION['WAREHOUSE'] = [ - 'id' => (int) $checkRoot->answer()[0]['id_warehouse'], - 'name' => $checkRoot->answer()[0]['name'] + 'id' => (int) $checkRoot->answer()[0]['id_warehouse'], + 'name' => $checkRoot->answer()[0]['name'], + 'modules' => ['upload', 'method'] ]; } diff --git a/manager/ManagerError.php b/manager/ManagerError.php index a410c81..1235df7 100755 --- a/manager/ManagerError.php +++ b/manager/ManagerError.php @@ -23,58 +23,61 @@ /* ModuleRequest */ + // Le module n'est pas activé + const DisabledModule = 4; + // Le @path n'est pas renseigne - const MissingPath = 4; + const MissingPath = 5; // Verification de la coherence du chemin (existe dans la conf) - const WrongPathModule = 5; + const WrongPathModule = 6; // Module non specifie dans la conf - const UnknownModule = 6; + const UnknownModule = 7; // Methode non specifie pour ce Module dans la conf - const UnknownMethod = 7; + const UnknownMethod = 8; // Methode inamorcable - const UncallableMethod = 8; + const UncallableMethod = 9; // Erreur de parametre(s) - const ParamError = 9; + const ParamError = 10; // Erreur dans le traitement - const ModuleError = 10; + const ModuleError = 11; /* Repo */ // Verification de la coherence du chemin (existe dans la conf) - const WrongPathRepo = 11; + const WrongPathRepo = 12; // Module non specifie dans la conf - const UnknownRepo = 12; + const UnknownRepo = 13; // Erreur dans le traitement - const RepoError = 13; + const RepoError = 14; /* Database */ // Erreur lors de la creation d'un objet PDO (connection) - const PDOConnection = 14; + const PDOConnection = 15; /* API token */ // Token inexistant ou faux - const TokenError = 15; + const TokenError = 16; - const PermissionError = 16; + const PermissionError = 17; /* Erreur d'UPLOAD */ - const UploadError = 17; + const UploadError = 18; // Mauvais format de fichier - const FormatError = 18; + const FormatError = 19; /* Erreur de contenu */ // Aucune donnée trouvée - const NoMatchFound = 19; + const NoMatchFound = 20; /* Erreur au niveau javascript */ //const JavascriptError = 20; // -> géré en js @@ -95,6 +98,7 @@ case self::InvalidFlags: return "Les spécifications (drapeaux) sont incorrects."; break; case self::UnreachableResource: return "La ressource n'existe pas (404)."; break; + case self::DisabledModule: return "Vous n'avez pas accès au module demandé."; break; case self::MissingPath: return "Le chemin de délégation n'a pas été renseigné."; break; case self::WrongPathModule: return "Le chemin de délégation est incorrect ('nomModule/nomMethode')."; break; case self::WrongPathRepo: return "Le chemin de délégation est incorrect ('nomRepo/nomMethode')."; break; diff --git a/manager/ModuleRequest.php b/manager/ModuleRequest.php index 94a2ba2..80a90f8 100755 --- a/manager/ModuleRequest.php +++ b/manager/ModuleRequest.php @@ -333,7 +333,18 @@ return false; // On retourne FALSE, si erreur } - /* [3] Verification de l'existence de la methode (conf) + + /* [3] On vérifie que le module est autorisé + =========================================================*/ + // Si le module n'est pas autorisé + // et qu'il ne finit pas par "Default" + if( !in_array($module, $_SESSION['WAREHOUSE']['modules']) && !preg_match('/^(\w+)Default$/', $module) ){ + $this->error = ManagerError::DisabledModule; + return false; // On retourne FALSE, si erreur + } + + + /* [4] Verification de l'existence de la methode (conf) =========================================================*/ if( array_key_exists($method, $this->modules[$module]) === false ){ // Si la methode n'est pas specifie dans la conf $this->error = ManagerError::UnknownMethod; @@ -342,7 +353,7 @@ - /* [4] Enregistrement du chemin et renvoi de SUCCESS + /* [5] Enregistrement du chemin et renvoi de SUCCESS =========================================================*/ $this->path = [ 'module' => $module,