From 98cf39dd37f20cb4f3f4c258d4677c0f39a05952 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Mon, 30 Jan 2017 19:59:06 +0100 Subject: [PATCH] Upgrade in progress + bug to fix -> error with AuthSystem --- ...entification.php => AuthSystemDefault.php} | 2 +- build/api/core/Request.php | 21 +++++++++++++------ build/api/module/clusterDefault.php | 18 ++++++++-------- build/api/module/historyDefault.php | 2 +- build/api/module/machineDefault.php | 18 ++++++++-------- build/api/module/module.php | 12 +++++------ build/api/module/userDefault.php | 16 +++++++------- build/database/core/Repo.php | 4 ++-- build/viewer/view/machine/view.php | 10 +++++---- config/modules.json | 2 +- public_html/index.php | 8 +++---- public_html/view/machines.php | 2 -- 12 files changed, 61 insertions(+), 54 deletions(-) rename build/api/core/{Authentification.php => AuthSystemDefault.php} (99%) diff --git a/build/api/core/Authentification.php b/build/api/core/AuthSystemDefault.php similarity index 99% rename from build/api/core/Authentification.php rename to build/api/core/AuthSystemDefault.php index 91a6073..a587750 100755 --- a/build/api/core/Authentification.php +++ b/build/api/core/AuthSystemDefault.php @@ -10,7 +10,7 @@ - class Authentification implements AuthSystem{ + class AuthSystemDefault implements AuthSystem{ public function __construct(){ self::check(); diff --git a/build/api/core/Request.php b/build/api/core/Request.php index 67feebd..294a8a7 100644 --- a/build/api/core/Request.php +++ b/build/api/core/Request.php @@ -23,6 +23,7 @@ private $params; private $modules; private $options; + private $http_method; // Contiendra la reponse a la requete public $answer; @@ -87,7 +88,7 @@ $params = (is_array($params)) ? $params : []; /* (3) On définit en constante la méthode HTTP */ - define('__HTTP_METHOD__', strtoupper($_SERVER['REQUEST_METHOD'])); + $this->http_method = strtoupper($_SERVER['REQUEST_METHOD']); /* [5] Verification du chemin (existence module+methode) @@ -113,9 +114,10 @@ $this->buildOptions(); - /* [9] Construction de l'objet + /* [9] Construction de l'objet (add http method to params) =========================================================*/ $this->params = $params; + $this->params['HTTP_METHOD'] = $this->http_method; $this->error->set(Err::Success); return true; // On retourne que tout s'est bien passe @@ -135,7 +137,7 @@ /* (1) Check instance type */ if( !($instance instanceof AuthSystem) ) return false; - + /* (2) Store instance */ self::$authsystem = $instance; } @@ -407,7 +409,7 @@ // On recupere les données de la regex $module = $matches[1]; - $method = __HTTP_METHOD__.'::'.$matches[2]; + $method = $this->http_method.'::'.$matches[2]; /* [2] Verification de l'existence du module (conf) @@ -458,10 +460,17 @@ return true; - /* [2] Vérification des permissions et de l'authentification =========================================================*/ - $granted = self::$authsystem::permission( $this->path['module'], $method['permissions'] ); + var_dump(self::$authsystem); + die('error line 466'); + // if no AuthSystem set up, deny by default + //if( !self::$authsystem instanceof AuthSystem ) + // return false; + + // Check permission using user-implemented AuthSystem + $granted = self::$authsystem::permission(); + //$granted = self::$authsystem::permission( $this->path['module'], $method['permissions'] ); /* (1) On retourne FAUX si aucun droit n'a ete trouve */ if( $granted->get() !== Err::Success ){ diff --git a/build/api/module/clusterDefault.php b/build/api/module/clusterDefault.php index 6e9c041..568b544 100755 --- a/build/api/module/clusterDefault.php +++ b/build/api/module/clusterDefault.php @@ -37,7 +37,7 @@ // Si une erreur est retournee, on retourne une erreur if( $id_cluster === false ) - return ['ModuleError' => new Error(Err::ModuleError)]; + return ['error' => new Error(Err::error)]; /* [5] Gestion du retour @@ -160,7 +160,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return [ 'ModuleError' => new Error(Err::NoMatchFound) ]; + return [ 'error' => new Error(Err::NoMatchFound) ]; return [ 'cluster' => $answer ]; @@ -192,7 +192,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return [ 'ModuleError' => new Error(Err::NoMatchFound) ]; + return [ 'error' => new Error(Err::NoMatchFound) ]; return [ 'cluster' => $answer ]; @@ -224,7 +224,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return [ 'ModuleError' => new Error(Err::NoMatchFound) ]; + return [ 'error' => new Error(Err::NoMatchFound) ]; return [ 'members' => $answer ]; @@ -259,7 +259,7 @@ // Si on a recupere aucun utilisateur, on retourne une erreur if( $cluster_data === false ) - return ['ModuleError' => new Error(Err::NoMatchFound)]; + return ['error' => new Error(Err::NoMatchFound)]; @@ -338,7 +338,7 @@ /* [2] On propage l'erreur retournée =========================================================*/ - return [ 'ModuleError' => $res ]; + return [ 'error' => $res ]; } /* SUPPRIME UNE PERMISSION @@ -362,7 +362,7 @@ /* [2] On propage l'erreur retournée =========================================================*/ - return [ 'ModuleError' => $res ]; + return [ 'error' => $res ]; } @@ -386,7 +386,7 @@ // Gestion erreur if( !is_array($res) ) - return ['ModuleError' => new Error(Err::NoMatchFound)]; + return ['error' => new Error(Err::NoMatchFound)]; /* (3) On retourne le résultat */ return [ 'permissions' => $res ]; @@ -412,7 +412,7 @@ // error if( !is_array($res) ) - return ['ModuleError' => new Error(Err::NoMatchFound)]; + return ['error' => new Error(Err::NoMatchFound)]; return ['clusters' => $res]; } diff --git a/build/api/module/historyDefault.php b/build/api/module/historyDefault.php index 2253948..99dd57f 100755 --- a/build/api/module/historyDefault.php +++ b/build/api/module/historyDefault.php @@ -37,7 +37,7 @@ // Si une erreur est retournee, on retourne une erreur if( $id_entry === false ) - return ['ModuleError' => new Error(Err::ModuleError)]; + return ['error' => new Error(Err::error)]; /* [2] Gestion du retour diff --git a/build/api/module/machineDefault.php b/build/api/module/machineDefault.php index 3c7b4c3..5497ffe 100755 --- a/build/api/module/machineDefault.php +++ b/build/api/module/machineDefault.php @@ -4,8 +4,8 @@ use \database\core\DatabaseDriver; use \manager\sessionManager; use \error\core\Error; + use \error\core\Err; use \database\core\Repo; - use \manager\repo\cluster as clusterRepo; class machineDefault{ @@ -33,7 +33,7 @@ // Si une erreur est retournee, on retourne une erreur if( $id_machine === false ) - return ['ModuleError' => new Error(Err::ModuleError)]; + return ['error' => new Error(Err::error)]; @@ -68,7 +68,7 @@ ]); /* (1) On retourne l'erreur du repo */ - return [ 'ModuleError' => $link_machine->answer() ]; + return [ 'error' => $link_machine->answer() ]; } @@ -95,7 +95,7 @@ ]); /* (1) On retourne l'erreur du repo */ - return [ 'ModuleError' => $link_machine->answer() ]; + return [ 'error' => $link_machine->answer() ]; } @@ -160,7 +160,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return [ 'ModuleError' => new Error(Err::NoMatchFound) ]; + return [ 'error' => new Error(Err::NoMatchFound) ]; return [ 'machine' => $answer ]; @@ -190,7 +190,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return [ 'ModuleError' => new Error(Err::NoMatchFound) ]; + return [ 'error' => new Error(Err::NoMatchFound) ]; return [ 'machine' => $answer ]; @@ -219,7 +219,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return [ 'ModuleError' => new Error(Err::NoMatchFound) ]; + return [ 'error' => new Error(Err::NoMatchFound) ]; return [ 'clusters' => $answer ]; @@ -251,7 +251,7 @@ // Si on a recupere aucune machine, on retourne une erreur if( !is_array($machine_data) ) - return ['ModuleError' => new Error(Err::NoMatchFound)]; + return ['error' => new Error(Err::NoMatchFound)]; @@ -471,7 +471,7 @@ // Si token incorrect, on envoie une erreur if( $checkToken->answer() !== true ) - return [ 'ModuleError' => new Error(Err::TokenError) ]; + return [ 'error' => new Error(Err::TokenError) ]; diff --git a/build/api/module/module.php b/build/api/module/module.php index a855e51..1fa47ea 100755 --- a/build/api/module/module.php +++ b/build/api/module/module.php @@ -16,7 +16,7 @@ public function method($params){ return [ - 'ModuleError' => new Error(Err::Success), + 'error' => new Error(Err::Success), 'ReceivedArguments' => $params ]; @@ -35,7 +35,7 @@ // Gestion de l'erreur de parsage if( $modules == null ) - return [ 'ModuleError' => new Error(Err::ParsingFailed) ]; + return [ 'error' => new Error(Err::ParsingFailed) ]; /* [2] Mise en forme de la liste des modules =========================================================*/ @@ -65,7 +65,7 @@ /* [n] Gestion du retour =========================================================*/ return [ - 'ModuleError' => new Error(Err::Success), + 'error' => new Error(Err::Success), 'headers' => [ 'Content-Type' => 'text/markdown; charset=utf-8', 'Content-Transfer-Encoding' => 'binary', @@ -91,7 +91,7 @@ // Gestion de l'erreur de parsage if( $modules == null ) - return [ 'ModuleError' => new Error(Err::ParsingFailed) ]; + return [ 'error' => new Error(Err::ParsingFailed) ]; /* [1] Début du fichier custom @@ -125,7 +125,7 @@ $content .= "#### A. Les réponses seront formattées en json et contiendront:\n\n"; - $content .= "1. `ModuleError` - Le code de l'erreur \n"; + $content .= "1. `error` - Le code de l'erreur \n"; $content .= "2. `ErrorDescription` - La description de l'erreur\n\n"; $content .= "****\n\n"; @@ -263,7 +263,7 @@ return [ - 'ModuleError' => new Error(Err::Success), + 'error' => new Error(Err::Success), 'headers' => [ 'Content-Type' => 'application/octet-stream; charset=utf-8', 'Content-Transfer-Encoding' => 'binary', diff --git a/build/api/module/userDefault.php b/build/api/module/userDefault.php index 8d5fabd..7ba5706 100755 --- a/build/api/module/userDefault.php +++ b/build/api/module/userDefault.php @@ -39,7 +39,7 @@ // Si une erreur est retournee, on retourne une erreur if( $id_user === false ) - return ['ModuleError' => new Error(Err::ModuleError)]; + return ['error' => new Error(Err::error)]; /* [2] Gestion du retour @@ -74,7 +74,7 @@ ]); /* (1) On retourne l'erreur du repo */ - return [ 'ModuleError' => $link_user->answer() ]; + return [ 'error' => $link_user->answer() ]; } @@ -102,7 +102,7 @@ ]); /* (1) On retourne l'erreur du repo */ - return [ 'ModuleError' => $link_user->answer() ]; + return [ 'error' => $link_user->answer() ]; } @@ -167,7 +167,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return [ 'ModuleError' => new Error(Err::NoMatchFound) ]; + return [ 'error' => new Error(Err::NoMatchFound) ]; return [ 'user' => $answer ]; @@ -196,7 +196,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return [ 'ModuleError' => new Error(Err::NoMatchFound) ]; + return [ 'error' => new Error(Err::NoMatchFound) ]; return [ 'user' => $answer ]; @@ -226,7 +226,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return [ 'ModuleError' => new Error(Err::NoMatchFound) ]; + return [ 'error' => new Error(Err::NoMatchFound) ]; return [ 'user' => $answer ]; @@ -256,7 +256,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return [ 'ModuleError' => new Error(Err::NoMatchFound) ]; + return [ 'error' => new Error(Err::NoMatchFound) ]; return [ 'clusters' => $answer ]; @@ -291,7 +291,7 @@ // Si on a recupere aucun utilisateur, on retourne une erreur if( !is_array($user_data) ) - return ['ModuleError' => new Error(Err::NoMatchFound)]; + return ['error' => new Error(Err::NoMatchFound)]; diff --git a/build/database/core/Repo.php b/build/database/core/Repo.php index fdec163..ba8830e 100755 --- a/build/database/core/Repo.php +++ b/build/database/core/Repo.php @@ -106,7 +106,7 @@ public function answer(){ - if( $this->error != new Error(Err::Success) ) + if( $this->error->get() != Err::Success ) return false; return $this->answer; @@ -122,7 +122,7 @@ public function dispatch(){ /* [1] On verifie qu'aucune erreur n'a ete signalee =========================================================*/ - if( $this->error != new Error(Err::Success) ) // si il y a une erreur + if( $this->error->get() != Err::Success ) // si il y a une erreur return false; // on la passe a la reponse diff --git a/build/viewer/view/machine/view.php b/build/viewer/view/machine/view.php index 7b5e5eb..0de1967 100755 --- a/build/viewer/view/machine/view.php +++ b/build/viewer/view/machine/view.php @@ -32,6 +32,7 @@ $twig->addFunction(new \Twig_Function('f_machines', function(){ $request = new Request('machineDefault/getAll'); // On utilise la methode 'getAll' du module 'machineDefault' $answer = $request->dispatch(); // On recupere la reponse + // // si erreur, on affiche rien par défaut if( $answer->error->get() != Err::Success ) return []; @@ -40,17 +41,18 @@ })); $twig->addFunction(new \Twig_Function('f_clusters', function($id_machine){ - $clustersReq = new Request('machineDefault/getClusters', [ + $request = new Request('machineDefault/getClusters', [ 'id_machine' => (int) $id_machine ]); + var_dump('r2 - machine/view.php:47', $request->error->get()); - $clustersRes = $clustersReq->dispatch(); + $answer = $request->dispatch(); // si erreur, on affiche rien par défaut - if( $clustersRes->error->get() != Err::Success ) + if( $answer->error->get() != Err::Success ) return []; - return $clustersRes->get('clusters'); + return $answer->get('clusters'); })); diff --git a/config/modules.json b/config/modules.json index b196c86..d55db17 100755 --- a/config/modules.json +++ b/config/modules.json @@ -3,7 +3,7 @@ "module": { "POST::method": { "description": "Test de l'API", - "permissions": [], + "permissions": ["warehouse"], "parameters": {} }, diff --git a/public_html/index.php b/public_html/index.php index 7314919..0da9a9b 100755 --- a/public_html/index.php +++ b/public_html/index.php @@ -2,12 +2,11 @@ require_once '../autoloader.php'; - debug(); use \router\core\Router; use \api\core\Request; use \api\core\Response; use \database\core\DatabaseDriver; - use \api\core\Authentification; + use \api\core\AuthSystemDefault; @@ -24,10 +23,9 @@ /* [1] Gestion des authentifications et des droits =========================================================*/ /* (1) On met à jour l'authentification et les permissions */ - $authsys = new Authentification(); - $auth = $authsys::auth(); + $auth = AuthSystemDefault::auth(); - Request::setAuthSystem($authsys); + Request::setAuthSystem(new AuthSystemDefault); /* (2) On définit la page d'accueil */ diff --git a/public_html/view/machines.php b/public_html/view/machines.php index 6f8cb9b..eb1d607 100755 --- a/public_html/view/machines.php +++ b/public_html/view/machines.php @@ -1,8 +1,6 @@