Upgraded to Error:2.0 + api:2.2

This commit is contained in:
xdrm-brackets 2017-01-30 18:39:21 +01:00
parent 6a483425ae
commit 812416a566
83 changed files with 1370 additions and 890 deletions

View File

@ -0,0 +1,21 @@
<?php
namespace api\core;
use \error\core\Err;
use \error\core\Error;
interface AuthSystem{
/* VERIFICATION DES ACCES EN FONCTION DE PERMISSIONS ATTENDUES
*
* @module<String> Module concerné
* @expected<array> Liste des permissions attendues
*
* @return error<Error> Erreur associée à la permission (Success/PermissionError/TokenError/etc)
*
*/
public static function permission($module, $expected);
}
?>

View File

@ -4,15 +4,17 @@
use \database\core\Repo; use \database\core\Repo;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
use \api\core\AuthSystem;
class Authentification{ class Authentification implements AuthSystem{
// Contiendra les erreurs
public $error;
public function __construct(){
self::check();
}
@ -133,7 +135,7 @@
* @module<String> Module concerné * @module<String> Module concerné
* @expected<array> Liste des permissions attendues * @expected<array> Liste des permissions attendues
* *
* @return status<Boolean> Si FALSE, pas la permission, sinon si * @return error<Error> Si FALSE, pas la permission, sinon si
* *
*/ */
public static function permission($module, $expected){ public static function permission($module, $expected){
@ -148,12 +150,12 @@
/* (1) Si entrepot requis, mais manquant /* (1) Si entrepot requis, mais manquant
---------------------------------------------------------*/ ---------------------------------------------------------*/
if( in_array('warehouse', $expected) && self::auth() < 1 ) if( in_array('warehouse', $expected) && self::auth() < 1 )
return Error::PermissionError; return new Error(Err::PermissionError);
/* (2) Si admin requis, mais manquant /* (2) Si admin requis, mais manquant
---------------------------------------------------------*/ ---------------------------------------------------------*/
if( in_array('admin', $expected) && self::auth() < 2 ) if( in_array('admin', $expected) && self::auth() < 2 )
return Error::PermissionError; return new Error(Err::PermissionError);
/* (3) On retire 'warehouse' et 'admin' de @expected /* (3) On retire 'warehouse' et 'admin' de @expected
---------------------------------------------------------*/ ---------------------------------------------------------*/
@ -169,7 +171,7 @@
foreach($expected as $permission) foreach($expected as $permission)
// Si il manque au minimum une permission, on retourne FALSE // Si il manque au minimum une permission, on retourne FALSE
if( !in_array($permission, $_SESSION['PERM']) ) if( !in_array($permission, $_SESSION['PERM']) )
return Error::PermissionError; return new Error(Err::PermissionError);
/* [3] Vérification que le module est actif pour l'entrepot /* [3] Vérification que le module est actif pour l'entrepot
@ -185,12 +187,12 @@
/* (3) Si aucune autorisation et pas module "Default" */ /* (3) Si aucune autorisation et pas module "Default" */
if( !$allowedModule && !$defaultModule ) if( !$allowedModule && !$defaultModule )
return Error::DisabledModule; return new Error(Err::DisabledModule);
/* [4] Si on a toutes les permissions requises /* [4] Si on a toutes les permissions requises
=========================================================*/ =========================================================*/
return Error::Success; return new Error(Err::Success);
} }

9
build/api/core/Checker.php Executable file → Normal file
View File

@ -81,11 +81,6 @@
return $checker && is_numeric($value) && $value <= 2147483647 && $value >= 0; return $checker && is_numeric($value) && $value <= 2147483647 && $value >= 0;
break; break;
// Code RFID
case 'rfid':
return $checker && is_string($value) && preg_match('/^[\dA-F]{2}(\-[\dA-F]{2}){3,5}$/i', $value);
break;
// String quelconque (peut etre vide) // String quelconque (peut etre vide)
case 'text': case 'text':
return $checker && is_string($value); return $checker && is_string($value);
@ -132,6 +127,10 @@
return $checker && is_string($value) && json_decode($value, true) !== NULL; return $checker && is_string($value) && json_decode($value, true) !== NULL;
break; break;
case 'numeric':
return $checker && (is_numeric($value) || $value == null || $value == 'null');
break;
default: default:
return false; return false;
break; break;

View File

@ -0,0 +1,31 @@
<?php
namespace api\core;
class ModuleFactory{
/* INSTANCIE UN MODULE
*
* @module<String> Nom du module
* @arguments<Array> [OPTIONNEL] Arguments à passer au constructeur
*
* @return instance<Module> Instance du module en question
*
*/
public static function getModule($module, $arguments=[]){
/* (1) On gère les arguments */
$arguments = is_array($arguments) ? $arguments : [];
/* (1) On vérifie que la classe existe */
if( !file_exists(__BUILD__."/api/module/$module.php") )
return false;
/* (2) On récupère la classe */
$class_name = "\\api\\module\\$module";
/* (3) On retourne une instance */
return new $class_name($arguments);
}
}

View File

@ -2,17 +2,21 @@
namespace api\core; namespace api\core;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \api\core\Authentification; use \api\core\AuthSystem;
use \api\core\ModuleFactory;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
use \http\core\HttpRequest;
class ModuleRequest{ class Request{
// Constantes // Constantes
public static function config_path(){ return __ROOT__.'/config/modules.json'; } private static function config_path(){ return __ROOT__.'/config/modules.json'; }
public static $default_options = [ private static $default_options = [
'download' => false 'download' => false
]; ];
private static $authsystem = null;
// Attributs prives utiles (initialisation) // Attributs prives utiles (initialisation)
private $path; private $path;
@ -39,66 +43,80 @@
* *
*/ */
public function __construct($path=null, $params=null){ public function __construct($path=null, $params=null){
// Si pas parametre manquant, on quitte /* [1] Fetch HttpRequest correct data
=========================================================*/
/* (1) Parse HttpRequest data because php doesn't parse it for non-POST HTTP method */
$httprequest = new HttpRequest();
$_POST = $httprequest->POST();
/* [2] Initialisation
=========================================================*/
/* (1) Erreur par défaut */
$this->error = new Error(Err::Success);
/* (2) Si pas parametre manquant, on quitte */
if( $path == null ){ if( $path == null ){
$this->error = Error::MissingPath; $this->error->set(Err::MissingPath);
return false; return false;
} }
/* [0] On met a jour la configuration
/* [3] On met a jour la configuration
=========================================================*/ =========================================================*/
// Modules specifies /* (1) Section Title */
$this->modules = json_decode( file_get_contents(self::config_path()), true ); $this->modules = json_decode( file_get_contents(self::config_path()), true );
// Gestion de l'erreur de parsage /* (2) Gestion de l'erreur de parsage */
if( $this->modules == null ){ if( $this->modules == null ){
$this->error = Error::ParsingFailed; $this->error->set(Err::ParsingFailed, 'json');
return false; return false;
} }
/* [1] Verification des types des parametres /* [4] Verification des types des parametres
=========================================================*/ =========================================================*/
// Type de @path /* (1) Section Title */
if( !is_string($path) ){ // Si le type est incorrect if( !is_string($path) ){ // Si le type est incorrect
$this->error = Error::WrongPathModule; $this->error->set(Err::WrongPathModule);
return false; // On retourne FALSE, si erreur return false; // On retourne FALSE, si erreur
} }
// Type de @data (optionnel) /* (2) Section Title */
$params = (is_array($params)) ? $params : []; $params = (is_array($params)) ? $params : [];
/* (3) On définit en constante la méthode HTTP */
define('__HTTP_METHOD__', strtoupper($_SERVER['REQUEST_METHOD']));
/* [2] Verification du chemin (existence module+methode)
/* [5] Verification du chemin (existence module+methode)
=========================================================*/ =========================================================*/
if( !$this->checkPath($path) ) // Verification de la coherence du chemin + attribution if( !$this->checkPath($path) ) // Verification de la coherence du chemin + attribution
return false; return false;
/* [6] Verification des droits
/* [3] Verification des droits
=========================================================*/ =========================================================*/
if( !$this->checkPermission() ) // Si on a pas les droits if( !$this->checkPermission() ) // Si on a pas les droits
return false; return false;
/* [4] Verification des parametres (si @type est defini) /* [7] Verification des parametres (si @type est defini)
=========================================================*/ =========================================================*/
if( !$this->checkParams($params) ){ // Verification de tous les types if( !$this->checkParams($params) ) // Verification de tous les types
$this->error = Error::ParamError;
return false; return false;
}
/* [5] Récupèration des options
/* [8] Récupèration des options
=========================================================*/ =========================================================*/
$this->buildOptions(); $this->buildOptions();
/* [6] Construction de l'objet /* [9] Construction de l'objet
=========================================================*/ =========================================================*/
$this->params = $params; $this->params = $params;
$this->error = Error::Success; $this->error->set(Err::Success);
return true; // On retourne que tout s'est bien passe return true; // On retourne que tout s'est bien passe
@ -106,9 +124,27 @@
/* DEFINIT LE SYSTEME D'AUTHENTIFICATION
*
* @instance<AuthSystem> Instance de type AuthSystem
*
* @return success<Boolean> Whether the AuthSystem is valid or not
*
*/
public static function setAuthSystem($instance=null){
/* (1) Check instance type */
if( !($instance instanceof AuthSystem) )
return false;
/* (2) Store instance */
self::$authsystem = $instance;
}
/* EXECUTE LE TRAITEMENT ASSOCIE ET REMPLIE LA REPONSE /* EXECUTE LE TRAITEMENT ASSOCIE ET REMPLIE LA REPONSE
* *
* @return answer<ModuleResponse> Retourne une reponse de type <ModuleResponse> si tout s'est bien passe * @return answer<Response> Retourne une reponse de type <Response> si tout s'est bien passe
* *
*/ */
public function dispatch(){ public function dispatch(){
@ -119,84 +155,108 @@
/* [1] On verifie qu'aucune erreur n'a ete signalee /* [1] On verifie qu'aucune erreur n'a ete signalee
=========================================================*/ =========================================================*/
if( $this->error != Error::Success ) // si il y a une erreur if( $this->error->get() !== Err::Success ) // si il y a une erreur
return new ModuleResponse($this->error); // on la passe a la reponse return new Response($this->error); // on la passe a la reponse
/* [2] On verifie que la methode est amorcable /* [2] On essaie d'instancier le module
=========================================================*/ =========================================================*/
if( !is_callable($this->getFunctionCaller()) ){ $instance = ModuleFactory::getModule($this->path['module']);
$this->error = Error::UncallableMethod;
return new ModuleResponse($this->error); if( $instance === false ){
$this->error->set(Err::UncallableModule, $this->path['module']);
return new Response($this->error);
}
/* [3] On verifie que la methode est amorcable
=========================================================*/
if( !is_callable([$instance, $this->getModuleMethod()]) ){
$this->error->set(Err::UncallableMethod, preg_replace('/\w+::/i', '', $this->path['method']) );
return new Response($this->error);
} }
/* [3] On amorce la methode /* [4] On amorce la methode
=========================================================*/ =========================================================*/
$returned = call_user_func( $this->getFunctionCaller(), $this->params ); /* (1) On lance la fonction */
$returned = call_user_func( [$instance, $this->getModuleMethod()], $this->params );
/* (2) On appelle le destructeur (si défini) */
$instance = null;
/* [4] Gestion de la reponse /* [5] Gestion de la reponse
=========================================================*/ =========================================================*/
$response = new ModuleResponse($this->error); /* (1) On construit la réponse avec l'erreur */
$response = new Response($this->error);
/* (2) On ajoute les données */
$response->appendAll($returned); $response->appendAll($returned);
// On retourne la réponse
return $response; return $response;
} }
/* EXECUTE LE TRAITEMENT ASSOCIE ET RENVOIE UN FICHIER AVEC LE HEADER ET LE BODY SPECIFIE /* EXECUTE LE TRAITEMENT ASSOCIE ET RENVOIE UN FICHIER AVEC LE HEADER ET LE BODY SPECIFIE
* *
*/ */
public function download(){ public function download(){
/* [1] On verifie qu'aucune erreur n'a ete signalee /* [1] On verifie qu'aucune erreur n'a ete signalee
=========================================================*/ =========================================================*/
if( $this->error != Error::Success ) // si il y a une erreur if( $this->error->get() !== Err::Success ) // si il y a une erreur
return new ModuleResponse($this->error); // on la passe a la reponse return new Response($this->error); // on la passe a la reponse
/* [2] On verifie que la methode est amorcable /* [2] On essaie d'instancier le module
=========================================================*/ =========================================================*/
if( !is_callable($this->getFunctionCaller()) ){ $instance = ModuleFactory::getModule($this->path['module']);
$this->error = Error::UncallableMethod;
return new ModuleResponse($this->error); if( $instance === false ){
$this->error->set(Err::UncallableModule);
return new Response($this->error);
}
/* [3] On verifie que la methode est amorcable
=========================================================*/
if( !is_callable([$instance, $this->getModuleMethod()]) ){
$this->error->set(Err::UncallableMethod);
return new Response($this->error);
} }
/* [3] On amorce la methode /* [4] On amorce la methode
=========================================================*/ =========================================================*/
$returned = call_user_func( $this->getFunctionCaller(), $this->params ); /* (1) On lance la fonction */
$returned = call_user_func( [$instance, $this->getModuleMethod()], $this->params );
/* (2) On appelle le destructeur (si défini) */
$instance = null;
/* [4] Vérification des erreurs et paramètres /* [5] Vérification des erreurs et paramètres
=========================================================*/ =========================================================*/
/* (1) Vérification de l'erreur retournée, si pas Success, on retourne l'erreur */ /* (1) Vérification de l'erreur retournée, si pas Success, on retourne l'erreur */
if( isset($returned['ModuleError']) && $returned['ModuleError'] != Error::Success ){ if( isset($returned['error']) && $returned['error'] instanceof Error && $returned['error']->get() != Err::Success ){
$this->error = $returned['ModuleError']; $this->error = $returned['error'];
return new ModuleResponse($this->error); return new Response($this->error);
} }
/* (2) Vérification du contenu, si pas défini */ /* (2) Vérification du contenu, si pas défini */
if( !isset($returned['body']) ){ if( !isset($returned['body']) ){
$this->error = Error::ParamError; $this->error->set(Err::ParamError);
return new ModuleResponse($this->error); return new Response($this->error);
} }
/* (3) Si @headers n'est pas défini on met par défaut */ /* (3) Si @headers n'est pas défini on met par défaut */
if( !isset($returned['headers']) || !is_array($returned['headers']) ) if( !isset($returned['headers']) || !is_array($returned['headers']) )
$returned['headers'] = []; $returned['headers'] = [];
$fromAjax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'; $fromAjax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
/* [5] Si la requête vient d'ajax on crée un fichier temporaire et on renvoie son URL
/* [6.1] Si requête ajax on crée un fichier temporaire et on renvoie son URL
=========================================================*/ =========================================================*/
if( $fromAjax ){ if( $fromAjax ){
@ -233,12 +293,12 @@
fclose($tmpfile); fclose($tmpfile);
chmod($tmpfnameroot, 0775); chmod($tmpfnameroot, 0775);
$response = new ModuleResponse(Error::Success); $response = new Response($this->error);
$response->append('link', $tmpfname); $response->append('link', $tmpfname);
return $response; return $response;
/* [6] Gestion du download direct si pas AJAX /* [6.2] Gestion du download direct si pas AJAX
=========================================================*/ =========================================================*/
}else{ }else{
/* (1) On définit les headers */ /* (1) On définit les headers */
@ -253,53 +313,77 @@
} }
/* DESERIALISATION A PARTIR DES DONNEES POST /* DESERIALISATION A PARTIR DE L'URL ET DES DONNEES POST (OPT)
* *
* @url<String> Contenu de l'url après api/ (si existe) * @url<String> Contenu de l'url formatté (commence à "/module/methode")
* @post<Array> Tableau des donnes $_POST => @path + @data (opt) * @post<Array> [opt] Tableau des donnes
* *
* @return instance<ModuleRequest> Retourne un objet de type <ModuleRequest> * @return instance<Request> Retourne un objet de type <Request>
*
* @note
* 1. `path` peut être dans l'url : /method/module
* `path` peut être dans les données $_POST
* 2. les données peuvent être dans l'url : /module/method/data1/data2/...
* les données peuvent être dans les données $_POST
* *
*/ */
public static function fromPost($url, $post){ public static function remote($url, $data=null){
is_null($data) && ($data = []);
/* [1] On verifie que le @path est renseigne /* [1] On verifie que le @path est renseigne
=========================================================*/ =========================================================*/
/* (1) Si le path est dans @url */ /* (1) Si le path est dans @url */
$pathInUrl = count($url) > 0 && is_string($url[0]) && strlen($url[0]) > 0 && preg_match('#^([\w_-]+)/([\w_-]+)/?$#', $url[0], $urlMatches); $pathInUrl = is_string($url) && preg_match('#^/?([\w_-]+/[\w_-]+)(?:/?|/((?:\w+/)*(?:\w+/?)))$#', $url, $urlMatches);
/* (2) On récupère le @path + les arguments dans l'URL */
if( $pathInUrl ){
// {1} On ajoute le @path aux données //
$data['path'] = $urlMatches[1];
// {2} On ajoute les arguments d'URL aux données //
if( count($urlMatches) > 2 ){
$urlParams = explode('/', trim($urlMatches[2], '/'));
foreach($urlParams as $k=>$v)
$data["URL_$k"] = $v;
}
}
// On l'utilise pour le chemin
if( $pathInUrl )
$post['path'] = $urlMatches[1].'/'.$urlMatches[2];
/* (2) On vérifie dans tous les cas si le path existe */ /* (2) On vérifie dans tous les cas si le path existe */
if( !isset($post['path']) ) if( !isset($data['path']) )
return new ModuleRequest(); return new Request();
/* [2] On verifie que @data est renseigne /* [3] On met les paramètres en JSON
=========================================================*/ =========================================================*/
// Si variable n'existe pas, on cree un tableau vide /* (1) On initialise les paramètres*/
$params = $post; $params = [];
// On retire le @path de @params /* (2) On met tous les paramètres en json (sauf @path) */
unset($params['path']); foreach($data as $name=>$value){
if( $name === 'path' )
continue;
// {1} On met en JSON //
/* [3] On met les paramètres JSON en JSON (si ils décodent sans erreur)
=========================================================*/
foreach($params as $name=>$value){
$json = json_decode( $value, true ); $json = json_decode( $value, true );
// Si aucune erreur, on affecte la valeur
// {2} Si ok -> on remplace //
if( !is_null($json) ) if( !is_null($json) )
$params[$name] = $json; $params[$name] = $json;
// {3} Sinon, on laisse tel quel //
else
$params[$name] = $value;
} }
/* [4] On retourne une instance de <ModuleRequest>
/* [4] On retourne une instance de <Request>
=========================================================*/ =========================================================*/
// On cree notre requete avec le token return new Request($data['path'], $params);
return new ModuleRequest($post['path'], $params);
} }
@ -317,19 +401,19 @@
/* [1] Verification format general /* [1] Verification format general
=========================================================*/ =========================================================*/
if( !preg_match('#^([\w_-]+)/([\w_-]+)$#i', $path, $matches) ){ // Si mauvais format if( !preg_match('#^([\w_-]+)/([\w_-]+)$#i', $path, $matches) ){ // Si mauvais format
$this->error = Error::WrongPathModule; $this->error->set(Err::WrongPathModule);
return false; return false;
} }
// On recupere les donnes de la regex // On recupere les données de la regex
$module = $matches[1]; $module = $matches[1];
$method = $matches[2]; $method = __HTTP_METHOD__.'::'.$matches[2];
/* [2] Verification de l'existence du module (conf) /* [2] Verification de l'existence du module (conf)
=========================================================*/ =========================================================*/
if( !array_key_exists($module, $this->modules) ){ // Si le module n'est pas specifie dans la conf if( !array_key_exists($module, $this->modules) ){ // Si le module n'est pas specifie dans la conf
$this->error = Error::UnknownModule; $this->error->set(Err::UnknownModule, $module);
return false; // On retourne FALSE, si erreur return false; // On retourne FALSE, si erreur
} }
@ -337,7 +421,7 @@
/* [3] Verification de l'existence de la methode (conf) /* [3] 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 if( array_key_exists($method, $this->modules[$module]) === false ){ // Si la methode n'est pas specifie dans la conf
$this->error = Error::UnknownMethod; $this->error->set(Err::UnknownMethod, preg_replace('/\w+::/i', '', $method) );
return false; // On retourne FALSE, si erreur return false; // On retourne FALSE, si erreur
} }
@ -370,17 +454,21 @@
$method = $this->modules[$this->path['module']][$this->path['method']]; $method = $this->modules[$this->path['module']][$this->path['method']];
// Si aucune permission n'est definie // Si aucune permission n'est definie
if( !isset($method['permissions']) ) return true; if( !isset($method['permissions']) || !is_array($method['permissions']) || count($method['permissions']) < 1 )
return true;
/* [2] Vérification des permissions et de l'authentification /* [2] Vérification des permissions et de l'authentification
=========================================================*/ =========================================================*/
$granted = Authentification::permission($this->path['module'], $method['permissions']); $granted = self::$authsystem::permission( $this->path['module'], $method['permissions'] );
/* (1) On retourne FAUX si aucun droit n'a ete trouve */ /* (1) On retourne FAUX si aucun droit n'a ete trouve */
if( $granted !== Error::Success ) if( $granted->get() !== Err::Success ){
$this->error = Error::PermissionError; $this->error = $granted;
return false;
}
@ -403,7 +491,10 @@
/* [1] On verifie qu'il ne manque aucun parametre /* [1] On verifie qu'il ne manque aucun parametre
=========================================================*/ =========================================================*/
// Si @params n'est pas un tableau // Si @params n'est pas un tableau
if( !is_array($params) ) return false; if( !is_array($params) ){
$this->error->set(Err::ConfigError);
return false;
}
$method = $this->modules[$this->path['module']][$this->path['method']]; $method = $this->modules[$this->path['module']][$this->path['method']];
@ -418,8 +509,10 @@
$isFile = isset($paramsdata['type']) && $paramsdata['type'] == 'FILE' && isset($_FILES[$name]); $isFile = isset($paramsdata['type']) && $paramsdata['type'] == 'FILE' && isset($_FILES[$name]);
/* (3) Si le paramètre est obligatoire et qu'il n'est pas donné -> erreur */ /* (3) Si le paramètre est obligatoire et qu'il n'est pas donné -> erreur */
if( !isset($params[$name]) && !$optional && !$isFile ) if( !isset($params[$name]) && !$optional && !$isFile ){
$this->error->set(Err::MissingParam, $name);
return false; return false;
}
/* (4) Si le type n'est pas defini, on a pas besoin de le vérifier */ /* (4) Si le type n'est pas defini, on a pas besoin de le vérifier */
if( !isset($paramsdata['type']) ) if( !isset($paramsdata['type']) )
@ -440,8 +533,10 @@
/* (6) Si le paramètre est renseigné */ /* (6) Si le paramètre est renseigné */
}else }else
// Si la verification est fausse, on retourne faux // Si la verification est fausse, on retourne faux
if( !Checker::run($paramsdata['type'], $params[$name]) ) if( !Checker::run($paramsdata['type'], $params[$name]) ){
$this->error->set(Err::WrongParam, $name, $paramsdata['type']);
return false; return false;
}
} }
@ -499,11 +594,12 @@
/* RENVOI LE CHEMIN D'AMORCAGE DE LA METHODE /* RENVOI LE CHEMIN D'AMORCAGE DE LA METHODE
* *
* @return path<Array> Retourne le chemin d'amorcage de la requete * @return method<String> Retourne le chemin d'amorcage de la method
* *
*/ */
private function getFunctionCaller(){ private function getModuleMethod(){
return [ '\\api\\module\\'.$this->path['module'], $this->path['method'] ]; /* (1) On essaie de trouver le bon nom */
return preg_replace('/\w+::/i', '', $this->path['method']);
} }

View File

@ -2,47 +2,30 @@
namespace api\core; namespace api\core;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
class Response{
// FORMAT:
//
// path: "nomModule/nomMethode"
// data1: {donnee1}
// data2: {donnee2}
// ...
//
//
//
//
class ModuleResponse{
// Attributs prives utiles (initialisation) // Attributs prives utiles (initialisation)
private $data; private $data;
public $error; public $error;
/* CONSTRUCTEUR D'UNE REPONSE DE MODULE /* CONSTRUCTEUR D'UNE REPONSE DE MODULE
* *
* @error<ModuleError> Erreur passee par la requete (si existe) * @error<ModuleError> Erreur passee par la requete (si existe)
* *
*/ */
public function __construct($error=Error::Success){ public function __construct($error=null){
if( !( $error instanceof Error ) )
$error = new Error(Err::Success);
$this->data = []; $this->data = [];
$this->error = $error; $this->error = $error;
} }
/* AJOUTE UNE DONNEE A LA REPONSE /* AJOUTE UNE DONNEE A LA REPONSE
* *
* @key<String> Le nom de la valeur a ajouter * @key<String> Le nom de la valeur a ajouter
* @value<mixed*> La valeur a ajouter * @value<mixed*> La valeur a ajouter
@ -56,12 +39,6 @@
} }
/* AJOUTE TOUTES LES DONNEES A LA REPONSE /* AJOUTE TOUTES LES DONNEES A LA REPONSE
* *
* @dataset<Array> Le tableau associatif correspondant a la reponse * @dataset<Array> Le tableau associatif correspondant a la reponse
@ -69,14 +46,15 @@
*/ */
public function appendAll($dataset){ public function appendAll($dataset){
// Si ce n'est pas un tableau, on ne fais rien // Si ce n'est pas un tableau, on ne fais rien
if( !is_array($dataset) ) return $this; if( !is_array($dataset) )
return $this;
// Si une valeur contient une erreur // Si une valeur contient une erreur
if( array_key_exists('ModuleError', $dataset) ){ if( array_key_exists('error', $dataset) && $dataset['error'] instanceof Error){
// On definit cette erreur // On definit cette erreur
$this->error = $dataset['ModuleError']; $this->error = $dataset['error'];
// On enleve cette entree des donnees // On enleve cette entree des donnees
unset($dataset['ModuleError']); unset($dataset['error']);
} }
// Ajoute une entree pour la cle @key et de valeur @value // Ajoute une entree pour la cle @key et de valeur @value
@ -84,14 +62,9 @@
return $this; return $this;
} }
/* RECUPERE UNE DONNEE DE LA REPONSE /* RECUPERE UNE DONNEE DE LA REPONSE
* *
* @key<String> Le nom de la valeur a recuperer * @key<String> Le nom de la valeur a recuperer
* *
@ -109,12 +82,6 @@
} }
/* RECUPERE TOUTES LES DONNEES DE LA REPONSE /* RECUPERE TOUTES LES DONNEES DE LA REPONSE
* *
* @return data<Array> Les donnees de la reponse * @return data<Array> Les donnees de la reponse
@ -126,10 +93,6 @@
} }
/* SERIALISATION A PARTIR DES DONNEES /* SERIALISATION A PARTIR DES DONNEES
* *
* @return json<String> Retourne les donnees serialisees * @return json<String> Retourne les donnees serialisees
@ -138,15 +101,15 @@
public function serialize(){ public function serialize(){
// Code Http // Code Http
Error::setHttpCode($this->error); $this->error->setHttpCode();
// Type de contenu // Type de contenu
// header('Content-Type: application/json; charset=utf-8'); header('Content-Type: application/json; charset=utf-8');
// On rajoute l'erreur au message // On rajoute l'erreur au message
$returnData = array_merge([ $returnData = array_merge([
'ModuleError' => $this->error, 'error' => $this->error->get(),
'ErrorDescription' => Error::explicit($this->error) 'ErrorDescription' => $this->error->explicit()
], ],
$this->data $this->data
); );
@ -154,9 +117,6 @@
return json_encode($returnData); return json_encode($returnData);
} }
} }
?> ?>

View File

@ -4,12 +4,19 @@
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \manager\sessionManager; use \manager\sessionManager;
use \api\core\Authentification; use \api\core\Authentification;
use \error\core\Error;
use \database\core\Repo; use \database\core\Repo;
use \manager\repo\cluster as clusterRepo; use \manager\repo\cluster as clusterRepo;
class authentificationDefault{ class authentificationDefault{
public function __construct(){
// Routine to execute before each call to authentificationDefault's method
}
public function __destruct(){
// Routine to execute after each call to authentificationDefault's method
}
/* CONNEXION A UN ENTREPOT /* CONNEXION A UN ENTREPOT
* *
* @name<String> Nom de l'entrepot * @name<String> Nom de l'entrepot
@ -18,7 +25,7 @@
* @return status<Boolean> TRUE si les crédits sont bons, sinon FALSE * @return status<Boolean> TRUE si les crédits sont bons, sinon FALSE
* *
*/ */
public static function warehouse($params){ public function warehouse($params){
extract($params); extract($params);
@ -70,7 +77,7 @@
* @return status<Boolean> TRUE si les crédits sont bons, sinon FALSE * @return status<Boolean> TRUE si les crédits sont bons, sinon FALSE
* *
*/ */
public static function admin($params){ public function admin($params){
extract($params); extract($params);
/* [0] Par défaut, on déconnecte l'administrateur /* [0] Par défaut, on déconnecte l'administrateur

View File

@ -10,6 +10,8 @@
class clusterDefault{ class clusterDefault{
public function __construct(){}
public function __destruct(){}
/* CREATION D'UN NOUVEL UTILISATEUR DANS LA BDD /* CREATION D'UN NOUVEL UTILISATEUR DANS LA BDD
* *
@ -19,7 +21,7 @@
* @return id_cluster<int> Retourne l'UID du groupe * @return id_cluster<int> Retourne l'UID du groupe
* *
*/ */
public static function create($params){ public function create($params){
extract($params); extract($params);
/* [2] Creation du groupe /* [2] Creation du groupe
@ -35,7 +37,7 @@
// Si une erreur est retournee, on retourne une erreur // Si une erreur est retournee, on retourne une erreur
if( $id_cluster === false ) if( $id_cluster === false )
return ['ModuleError' => Error::ModuleError]; return ['ModuleError' => new Error(Err::ModuleError)];
/* [5] Gestion du retour /* [5] Gestion du retour
@ -57,7 +59,7 @@
* @return clusters<Array> Retourne la liste des groupes trouves * @return clusters<Array> Retourne la liste des groupes trouves
* *
*/ */
public static function search($params){ public function search($params){
extract($params); extract($params);
$result = []; $result = [];
@ -101,7 +103,7 @@
* @return clusters<Array> Liste des groupes * @return clusters<Array> Liste des groupes
* *
*/ */
public static function getAll($params){ public function getAll($params){
extract($params); extract($params);
$result = []; $result = [];
@ -144,7 +146,7 @@
* @return cluster<Array> Groupe d'UID donne * @return cluster<Array> Groupe d'UID donne
* *
*/ */
public static function getById($params){ public function getById($params){
extract($params); extract($params);
$repoMethod = ($class==0) ? 'user_cluster/getById' : 'machine_cluster/getById'; $repoMethod = ($class==0) ? 'user_cluster/getById' : 'machine_cluster/getById';
@ -158,7 +160,7 @@
// Si aucun resultat, on retourne une erreur // Si aucun resultat, on retourne une erreur
if( $answer === false ) if( $answer === false )
return [ 'ModuleError' => Error::NoMatchFound ]; return [ 'ModuleError' => new Error(Err::NoMatchFound) ];
return [ 'cluster' => $answer ]; return [ 'cluster' => $answer ];
@ -176,7 +178,7 @@
* @return cluster<Array> Groupe de nom donne * @return cluster<Array> Groupe de nom donne
* *
*/ */
public static function getByName($params){ public function getByName($params){
extract($params); extract($params);
$repoMethod = ($class==0) ? 'user_cluster/getByName' : 'machine_cluster/getByName'; $repoMethod = ($class==0) ? 'user_cluster/getByName' : 'machine_cluster/getByName';
@ -190,7 +192,7 @@
// Si aucun resultat, on retourne une erreur // Si aucun resultat, on retourne une erreur
if( $answer === false ) if( $answer === false )
return [ 'ModuleError' => Error::NoMatchFound ]; return [ 'ModuleError' => new Error(Err::NoMatchFound) ];
return [ 'cluster' => $answer ]; return [ 'cluster' => $answer ];
@ -208,7 +210,7 @@
* @return members<Array> Membres du groupe donne * @return members<Array> Membres du groupe donne
* *
*/ */
public static function getMembers($params){ public function getMembers($params){
extract($params); extract($params);
$repoMethod = ($class==0) ? 'user_cluster/getMembers' : 'machine_cluster/getMembers'; $repoMethod = ($class==0) ? 'user_cluster/getMembers' : 'machine_cluster/getMembers';
@ -222,7 +224,7 @@
// Si aucun resultat, on retourne une erreur // Si aucun resultat, on retourne une erreur
if( $answer === false ) if( $answer === false )
return [ 'ModuleError' => Error::NoMatchFound ]; return [ 'ModuleError' => new Error(Err::NoMatchFound) ];
return [ 'members' => $answer ]; return [ 'members' => $answer ];
@ -241,7 +243,7 @@
* @return status<Boolean> Retourne si oui ou non tout s'est bien deroule * @return status<Boolean> Retourne si oui ou non tout s'est bien deroule
* *
*/ */
public static function edit($params){ public function edit($params){
extract($params); extract($params);
@ -257,7 +259,7 @@
// Si on a recupere aucun utilisateur, on retourne une erreur // Si on a recupere aucun utilisateur, on retourne une erreur
if( $cluster_data === false ) if( $cluster_data === false )
return ['ModuleError' => Error::NoMatchFound]; return ['ModuleError' => new Error(Err::NoMatchFound)];
@ -298,7 +300,7 @@
* @return status<Boolean> Retourne si oui ou non tout s'est bien deroule * @return status<Boolean> Retourne si oui ou non tout s'est bien deroule
* *
*/ */
public static function delete($params){ public function delete($params){
extract($params); extract($params);
$repoMethod = ($class==0) ? 'user_cluster/delete' : 'machine_cluster/delete'; $repoMethod = ($class==0) ? 'user_cluster/delete' : 'machine_cluster/delete';
@ -322,7 +324,7 @@
* @id_action<int> UID de l'action en question * @id_action<int> UID de l'action en question
* *
*/ */
public static function addPermission($params){ public function addPermission($params){
extract($params); extract($params);
/* [1] On crée la relation via le repo /* [1] On crée la relation via le repo
@ -346,7 +348,7 @@
* @id_action<int> UID de l'action en question * @id_action<int> UID de l'action en question
* *
*/ */
public static function remPermission($params){ public function remPermission($params){
extract($params); extract($params);
/* [1] On supprime la relation via le repo /* [1] On supprime la relation via le repo
@ -371,7 +373,7 @@
* @return permissions<Array> Liste des permissions du groupe * @return permissions<Array> Liste des permissions du groupe
* *
*/ */
public static function getPermissions($params){ public function getPermissions($params){
extract($params); extract($params);
/* [1] On propage au repo /* [1] On propage au repo
@ -384,7 +386,7 @@
// Gestion erreur // Gestion erreur
if( !is_array($res) ) if( !is_array($res) )
return ['ModuleError' => Error::NoMatchFound]; return ['ModuleError' => new Error(Err::NoMatchFound)];
/* (3) On retourne le résultat */ /* (3) On retourne le résultat */
return [ 'permissions' => $res ]; return [ 'permissions' => $res ];
@ -399,7 +401,7 @@
* @return clusters<Array> Liste des user_cluster ayant la permission sur le groupe target * @return clusters<Array> Liste des user_cluster ayant la permission sur le groupe target
* *
*/ */
public static function getAuthenticatedClusters($params){ public function getAuthenticatedClusters($params){
extract($params); extract($params);
/* [1] On propage au repo /* [1] On propage au repo
@ -410,7 +412,7 @@
// error // error
if( !is_array($res) ) if( !is_array($res) )
return ['ModuleError' => Error::NoMatchFound]; return ['ModuleError' => new Error(Err::NoMatchFound)];
return ['clusters' => $res]; return ['clusters' => $res];
} }

12
build/api/module/historyDefault.php Normal file → Executable file
View File

@ -8,6 +8,8 @@
class historyDefault{ class historyDefault{
public function __construct(){}
public function __destruct(){}
/* CREATION D'UNE NOUVELLE ENTREE DANS LA BDD /* CREATION D'UNE NOUVELLE ENTREE DANS LA BDD
@ -20,7 +22,7 @@
* @return status<Boolean> Retourne si oui ou non, tout s'est bien passe * @return status<Boolean> Retourne si oui ou non, tout s'est bien passe
* *
*/ */
public static function create($params){ public function create($params){
extract($params); extract($params);
/* [1] Creation de l'utilisateur /* [1] Creation de l'utilisateur
@ -35,7 +37,7 @@
// Si une erreur est retournee, on retourne une erreur // Si une erreur est retournee, on retourne une erreur
if( $id_entry === false ) if( $id_entry === false )
return ['ModuleError' => Error::ModuleError]; return ['ModuleError' => new Error(Err::ModuleError)];
/* [2] Gestion du retour /* [2] Gestion du retour
@ -56,7 +58,7 @@
* @return users<Array> Retourne la liste des utilisateurs trouves * @return users<Array> Retourne la liste des utilisateurs trouves
* *
*/ */
public static function search($params){ public function search($params){
extract($params); extract($params);
// On recupere les donnees // On recupere les donnees
@ -77,7 +79,7 @@
* @return history<Array> Liste des entrées de l'historique * @return history<Array> Liste des entrées de l'historique
* *
*/ */
public static function getAll(){ public function getAll(){
// On recupere les donnees // On recupere les donnees
$entries = new Repo('history/getAll', [ $_SESSION['WAREHOUSE']['id'] ]); $entries = new Repo('history/getAll', [ $_SESSION['WAREHOUSE']['id'] ]);
@ -92,7 +94,7 @@
* @return status<Boolean> Retourne si oui ou non tout s'est bien deroule * @return status<Boolean> Retourne si oui ou non tout s'est bien deroule
* *
*/ */
public static function delete($params){ public function delete($params){
extract($params); extract($params);
/* [1] On supprime l'utilisateur /* [1] On supprime l'utilisateur

View File

@ -9,6 +9,9 @@
class machineDefault{ class machineDefault{
public function __construct(){}
public function __destruct(){}
/* CREATION D'UNE NOUVELLE MACHINE DANS LA BDD /* CREATION D'UNE NOUVELLE MACHINE DANS LA BDD
* *
@ -17,7 +20,7 @@
* @return status<Boolean> Retourne si oui ou non, tout s'est bien passe * @return status<Boolean> Retourne si oui ou non, tout s'est bien passe
* *
*/ */
public static function create($params){ public function create($params){
extract($params); extract($params);
/* [1] Creation de la machine /* [1] Creation de la machine
@ -30,7 +33,7 @@
// Si une erreur est retournee, on retourne une erreur // Si une erreur est retournee, on retourne une erreur
if( $id_machine === false ) if( $id_machine === false )
return ['ModuleError' => Error::ModuleError]; return ['ModuleError' => new Error(Err::ModuleError)];
@ -54,7 +57,7 @@
* Renvoie FALSE si une erreur occure * Renvoie FALSE si une erreur occure
* *
*/ */
public static function link($params){ public function link($params){
extract($params); extract($params);
/* Creation de l'association */ /* Creation de l'association */
@ -81,7 +84,7 @@
* Renvoie FALSE si une erreur occure * Renvoie FALSE si une erreur occure
* *
*/ */
public static function unlink($params){ public function unlink($params){
extract($params); extract($params);
/* Suppression de l'association */ /* Suppression de l'association */
@ -106,7 +109,7 @@
* @return machines<Array> Retourne la liste des machines trouvees * @return machines<Array> Retourne la liste des machines trouvees
* *
*/ */
public static function search($params){ public function search($params){
extract($params); extract($params);
// On recupere les donnees // On recupere les donnees
@ -127,7 +130,7 @@
* @return machines<Array> Liste des machines * @return machines<Array> Liste des machines
* *
*/ */
public static function getAll(){ public function getAll(){
// On recupere les donnees // On recupere les donnees
$machines = new Repo('machine/getAll', [$_SESSION['WAREHOUSE']['id']]); $machines = new Repo('machine/getAll', [$_SESSION['WAREHOUSE']['id']]);
@ -145,7 +148,7 @@
* @return machine<Array> Machine d'UID donne * @return machine<Array> Machine d'UID donne
* *
*/ */
public static function getById($params){ public function getById($params){
extract($params); extract($params);
// On recupere les donnees // On recupere les donnees
@ -157,7 +160,7 @@
// Si aucun resultat, on retourne une erreur // Si aucun resultat, on retourne une erreur
if( $answer === false ) if( $answer === false )
return [ 'ModuleError' => Error::NoMatchFound ]; return [ 'ModuleError' => new Error(Err::NoMatchFound) ];
return [ 'machine' => $answer ]; return [ 'machine' => $answer ];
@ -174,7 +177,7 @@
* @return machine<Array> Machine de name donne * @return machine<Array> Machine de name donne
* *
*/ */
public static function getByName($params){ public function getByName($params){
extract($params); extract($params);
@ -187,7 +190,7 @@
// Si aucun resultat, on retourne une erreur // Si aucun resultat, on retourne une erreur
if( $answer === false ) if( $answer === false )
return [ 'ModuleError' => Error::NoMatchFound ]; return [ 'ModuleError' => new Error(Err::NoMatchFound) ];
return [ 'machine' => $answer ]; return [ 'machine' => $answer ];
@ -204,7 +207,7 @@
* @return clusters<Array> Groupes de la machine donne * @return clusters<Array> Groupes de la machine donne
* *
*/ */
public static function getClusters($params){ public function getClusters($params){
extract($params); extract($params);
// On recupere les donnees // On recupere les donnees
@ -216,7 +219,7 @@
// Si aucun resultat, on retourne une erreur // Si aucun resultat, on retourne une erreur
if( $answer === false ) if( $answer === false )
return [ 'ModuleError' => Error::NoMatchFound ]; return [ 'ModuleError' => new Error(Err::NoMatchFound) ];
return [ 'clusters' => $answer ]; return [ 'clusters' => $answer ];
@ -234,7 +237,7 @@
* @return status<Boolean> Retourne si oui ou non tout s'est bien deroule * @return status<Boolean> Retourne si oui ou non tout s'est bien deroule
* *
*/ */
public static function edit($params){ public function edit($params){
extract($params); extract($params);
@ -248,7 +251,7 @@
// Si on a recupere aucune machine, on retourne une erreur // Si on a recupere aucune machine, on retourne une erreur
if( !is_array($machine_data) ) if( !is_array($machine_data) )
return ['ModuleError' => Error::NoMatchFound]; return ['ModuleError' => new Error(Err::NoMatchFound)];
@ -290,7 +293,7 @@
* @return status<Boolean> Retourne si oui ou non tout s'est bien deroule * @return status<Boolean> Retourne si oui ou non tout s'est bien deroule
* *
*/ */
public static function delete($params){ public function delete($params){
extract($params); extract($params);
// On recupere les donnees // On recupere les donnees
@ -324,7 +327,7 @@
* @return data<Array> Données d'initialisation du système * @return data<Array> Données d'initialisation du système
* *
*/ */
public static function init($params){ public function init($params){
extract($params); extract($params);
/* [1] On récupére la liste des actions /* [1] On récupére la liste des actions
@ -459,7 +462,7 @@
* @return data<Array> Données de retour de synchronisation * @return data<Array> Données de retour de synchronisation
* *
*/ */
public static function sync($params){ public function sync($params){
extract($params); extract($params);
/* [0] Vérification du token /* [0] Vérification du token
@ -468,7 +471,7 @@
// Si token incorrect, on envoie une erreur // Si token incorrect, on envoie une erreur
if( $checkToken->answer() !== true ) if( $checkToken->answer() !== true )
return [ 'ModuleError' => Error::TokenError ]; return [ 'ModuleError' => new Error(Err::TokenError) ];

View File

@ -2,17 +2,21 @@
namespace api\module; namespace api\module;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
use \manager\ResourceDispatcher; use \manager\ResourceDispatcher;
class module{ class module{
public function __construct(){}
public function __destruct(){}
/* PERMET DE TESTER L'API /* PERMET DE TESTER L'API
* *
*/ */
public static function method($params){ public function method($params){
return [ return [
'ModuleError' => Error::Success, 'ModuleError' => new Error(Err::Success),
'ReceivedArguments' => $params 'ReceivedArguments' => $params
]; ];
@ -23,7 +27,7 @@
* @return markdown<String> Description des modules * @return markdown<String> Description des modules
* *
*/ */
public static function markdown(){ public function markdown(){
/* [1] Récupération de la configuration /* [1] Récupération de la configuration
=========================================================*/ =========================================================*/
// On récupère le fichier et on le parse // On récupère le fichier et on le parse
@ -31,7 +35,7 @@
// Gestion de l'erreur de parsage // Gestion de l'erreur de parsage
if( $modules == null ) if( $modules == null )
return [ 'ModuleError' => Error::ParsingFailed ]; return [ 'ModuleError' => new Error(Err::ParsingFailed) ];
/* [2] Mise en forme de la liste des modules /* [2] Mise en forme de la liste des modules
=========================================================*/ =========================================================*/
@ -61,7 +65,7 @@
/* [n] Gestion du retour /* [n] Gestion du retour
=========================================================*/ =========================================================*/
return [ return [
'ModuleError' => Error::Success, 'ModuleError' => new Error(Err::Success),
'headers' => [ 'headers' => [
'Content-Type' => 'text/markdown; charset=utf-8', 'Content-Type' => 'text/markdown; charset=utf-8',
'Content-Transfer-Encoding' => 'binary', 'Content-Transfer-Encoding' => 'binary',
@ -79,7 +83,7 @@
* @return apiBlueprint<String> Description des modules au format API Blueprint * @return apiBlueprint<String> Description des modules au format API Blueprint
* *
*/ */
public static function apiBlueprint(){ public function apiBlueprint(){
/* [0] Récupération de la configuration /* [0] Récupération de la configuration
=========================================================*/ =========================================================*/
// On récupère le fichier et on le parse // On récupère le fichier et on le parse
@ -87,7 +91,7 @@
// Gestion de l'erreur de parsage // Gestion de l'erreur de parsage
if( $modules == null ) if( $modules == null )
return [ 'ModuleError' => Error::ParsingFailed ]; return [ 'ModuleError' => new Error(Err::ParsingFailed) ];
/* [1] Début du fichier custom /* [1] Début du fichier custom
@ -259,7 +263,7 @@
return [ return [
'ModuleError' => Error::Success, 'ModuleError' => new Error(Err::Success),
'headers' => [ 'headers' => [
'Content-Type' => 'application/octet-stream; charset=utf-8', 'Content-Type' => 'application/octet-stream; charset=utf-8',
'Content-Transfer-Encoding' => 'binary', 'Content-Transfer-Encoding' => 'binary',

View File

@ -8,6 +8,8 @@
class userDefault{ class userDefault{
public function __construct(){}
public function __destruct(){}
/* CREATION D'UN NOUVEL UTILISATEUR DANS LA BDD /* CREATION D'UN NOUVEL UTILISATEUR DANS LA BDD
* *
@ -20,7 +22,7 @@
* @return status<Boolean> Retourne si oui ou non, tout s'est bien passe * @return status<Boolean> Retourne si oui ou non, tout s'est bien passe
* *
*/ */
public static function create($params){ public function create($params){
extract($params); extract($params);
/* [1] Creation de l'utilisateur /* [1] Creation de l'utilisateur
@ -37,7 +39,7 @@
// Si une erreur est retournee, on retourne une erreur // Si une erreur est retournee, on retourne une erreur
if( $id_user === false ) if( $id_user === false )
return ['ModuleError' => Error::ModuleError]; return ['ModuleError' => new Error(Err::ModuleError)];
/* [2] Gestion du retour /* [2] Gestion du retour
@ -60,7 +62,7 @@
* Renvoie FALSE si une erreur occure * Renvoie FALSE si une erreur occure
* *
*/ */
public static function link($params){ public function link($params){
extract($params); extract($params);
/* [1] Creation de l'association /* [1] Creation de l'association
@ -88,7 +90,7 @@
* Renvoie FALSE si une erreur occure * Renvoie FALSE si une erreur occure
* *
*/ */
public static function unlink($params){ public function unlink($params){
extract($params); extract($params);
/* [1] Suppression de l'association /* [1] Suppression de l'association
@ -114,7 +116,7 @@
* @return users<Array> Retourne la liste des utilisateurs trouves * @return users<Array> Retourne la liste des utilisateurs trouves
* *
*/ */
public static function search($params){ public function search($params){
extract($params); extract($params);
// On recupere les donnees // On recupere les donnees
@ -135,7 +137,7 @@
* @return utilisateurs<Array> Liste des utilisateurs * @return utilisateurs<Array> Liste des utilisateurs
* *
*/ */
public static function getAll(){ public function getAll(){
// On recupere les donnees // On recupere les donnees
$users = new Repo('user/getAll', [ $_SESSION['WAREHOUSE']['id'] ]); $users = new Repo('user/getAll', [ $_SESSION['WAREHOUSE']['id'] ]);
@ -153,7 +155,7 @@
* @return utilisateur<Array> Utilisateur d'UID donne * @return utilisateur<Array> Utilisateur d'UID donne
* *
*/ */
public static function getById($params){ public function getById($params){
extract($params); extract($params);
// On recupere les donnees // On recupere les donnees
@ -165,7 +167,7 @@
// Si aucun resultat, on retourne une erreur // Si aucun resultat, on retourne une erreur
if( $answer === false ) if( $answer === false )
return [ 'ModuleError' => Error::NoMatchFound ]; return [ 'ModuleError' => new Error(Err::NoMatchFound) ];
return [ 'user' => $answer ]; return [ 'user' => $answer ];
@ -182,7 +184,7 @@
* @return utilisateur<Array> Utilisateur de code donne * @return utilisateur<Array> Utilisateur de code donne
* *
*/ */
public static function getByCode($params){ public function getByCode($params){
extract($params); extract($params);
// On recupere les donnees // On recupere les donnees
@ -194,7 +196,7 @@
// Si aucun resultat, on retourne une erreur // Si aucun resultat, on retourne une erreur
if( $answer === false ) if( $answer === false )
return [ 'ModuleError' => Error::NoMatchFound ]; return [ 'ModuleError' => new Error(Err::NoMatchFound) ];
return [ 'user' => $answer ]; return [ 'user' => $answer ];
@ -211,7 +213,7 @@
* @return utilisateur<Array> Utilisateur d'username donne * @return utilisateur<Array> Utilisateur d'username donne
* *
*/ */
public static function getByUsername($params){ public function getByUsername($params){
extract($params); extract($params);
@ -224,7 +226,7 @@
// Si aucun resultat, on retourne une erreur // Si aucun resultat, on retourne une erreur
if( $answer === false ) if( $answer === false )
return [ 'ModuleError' => Error::NoMatchFound ]; return [ 'ModuleError' => new Error(Err::NoMatchFound) ];
return [ 'user' => $answer ]; return [ 'user' => $answer ];
@ -241,7 +243,7 @@
* @return clusters<Array> Groupes de l'utilisateur donne * @return clusters<Array> Groupes de l'utilisateur donne
* *
*/ */
public static function getClusters($params){ public function getClusters($params){
extract($params); extract($params);
@ -254,7 +256,7 @@
// Si aucun resultat, on retourne une erreur // Si aucun resultat, on retourne une erreur
if( $answer === false ) if( $answer === false )
return [ 'ModuleError' => Error::NoMatchFound ]; return [ 'ModuleError' => new Error(Err::NoMatchFound) ];
return [ 'clusters' => $answer ]; return [ 'clusters' => $answer ];
@ -276,7 +278,7 @@
* @return status<Boolean> Retourne si oui ou non tout s'est bien deroule * @return status<Boolean> Retourne si oui ou non tout s'est bien deroule
* *
*/ */
public static function edit($params){ public function edit($params){
extract($params); extract($params);
/* [1] On verifie l'existence de l'utilisateur /* [1] On verifie l'existence de l'utilisateur
@ -289,7 +291,7 @@
// Si on a recupere aucun utilisateur, on retourne une erreur // Si on a recupere aucun utilisateur, on retourne une erreur
if( !is_array($user_data) ) if( !is_array($user_data) )
return ['ModuleError' => Error::NoMatchFound]; return ['ModuleError' => new Error(Err::NoMatchFound)];
@ -343,7 +345,7 @@
* @return status<Boolean> Retourne si oui ou non tout s'est bien deroule * @return status<Boolean> Retourne si oui ou non tout s'est bien deroule
* *
*/ */
public static function delete($params){ public function delete($params){
extract($params); extract($params);
/* [1] On supprime l'utilisateur /* [1] On supprime l'utilisateur

View File

@ -2,6 +2,7 @@
namespace database\core; namespace database\core;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
class DataBaseDriver{ class DataBaseDriver{
@ -62,11 +63,11 @@
$this->pdo = new \PDO('mysql:host='.$this->host.';dbname='.$this->dbname, $this->username, $this->password, [\PDO::ATTR_TIMEOUT => 10]); $this->pdo = new \PDO('mysql:host='.$this->host.';dbname='.$this->dbname, $this->username, $this->password, [\PDO::ATTR_TIMEOUT => 10]);
// On signale que tout s'est bien passe // On signale que tout s'est bien passe
$this->error = Error::Success; $this->error = new Error(Err::Success);
}catch(Exception $e){ }catch(Exception $e){
// On signale qu'il y a une erreur // On signale qu'il y a une erreur
$this->error = Error::PDOConnection; $this->error = new Error(Err::PDOConnection);
} }
} }

View File

@ -3,6 +3,7 @@
namespace database\core; namespace database\core;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
use \api\core\Authentification; use \api\core\Authentification;
@ -50,7 +51,7 @@
// Si pas parametre manquant, on quitte // Si pas parametre manquant, on quitte
if( $path == null ){ if( $path == null ){
$this->error = Error::MissingPath; $this->error = new Error(Err::MissingPath);
return false; return false;
} }
@ -61,7 +62,7 @@
// Gestion de l'erreur de parsage // Gestion de l'erreur de parsage
if( $this->repositories == null ){ if( $this->repositories == null ){
$this->error = Error::ParsingFailed; $this->error = new Error(Err::ParsingFailed);
return false; return false;
} }
@ -71,7 +72,7 @@
=========================================================*/ =========================================================*/
// Type de @path // Type de @path
if( !is_string($path) ){ // Si le type est incorrect if( !is_string($path) ){ // Si le type est incorrect
$this->error = Error::WrongPathRepo; $this->error = new Error(Err::WrongPathRepo);
return false; // On retourne FALSE, si erreur return false; // On retourne FALSE, si erreur
} }
@ -89,7 +90,7 @@
/* [3] Construction de l'objet /* [3] Construction de l'objet
=========================================================*/ =========================================================*/
$this->params = $params; $this->params = $params;
$this->error = Error::Success; $this->error = new Error(Err::Success);
/* [4] Enregistrement de la reponse /* [4] Enregistrement de la reponse
=========================================================*/ =========================================================*/
@ -105,7 +106,7 @@
public function answer(){ public function answer(){
if( $this->error != Error::Success ) if( $this->error != new Error(Err::Success) )
return false; return false;
return $this->answer; return $this->answer;
@ -121,14 +122,14 @@
public function dispatch(){ public function dispatch(){
/* [1] On verifie qu'aucune erreur n'a ete signalee /* [1] On verifie qu'aucune erreur n'a ete signalee
=========================================================*/ =========================================================*/
if( $this->error != Error::Success ) // si il y a une erreur if( $this->error != new Error(Err::Success) ) // si il y a une erreur
return false; // on la passe a la reponse return false; // on la passe a la reponse
/* [2] On verifie que la methode est amorcable /* [2] On verifie que la methode est amorcable
=========================================================*/ =========================================================*/
if( !is_callable($this->getFunctionCaller()) ){ if( !is_callable($this->getFunctionCaller()) ){
$this->error = Error::UncallableMethod; $this->error = new Error(Err::UncallableMethod);
return false; return false;
} }
@ -151,7 +152,7 @@
/* [1] Verification format general /* [1] Verification format general
=========================================================*/ =========================================================*/
if( !preg_match('#^([\w_-]+)/([\w_-]+)$#i', $path, $matches) ){ // Si mauvais format if( !preg_match('#^([\w_-]+)/([\w_-]+)$#i', $path, $matches) ){ // Si mauvais format
$this->error = Error::WrongPathRepo; $this->error = new Error(Err::WrongPathRepo);
return false; return false;
} }
@ -162,14 +163,14 @@
/* [2] Verification de l'existence du repo (conf) /* [2] Verification de l'existence du repo (conf)
=========================================================*/ =========================================================*/
if( !array_key_exists($repository, $this->repositories) ){ // Si le repo n'est pas specifie dans la conf if( !array_key_exists($repository, $this->repositories) ){ // Si le repo n'est pas specifie dans la conf
$this->error = Error::UnknownRepo; $this->error = new Error(Err::UnknownRepo);
return false; // On retourne FALSE, si erreur return false; // On retourne FALSE, si erreur
} }
/* [3] Verification de l'existence de la methode (conf) /* [3] Verification de l'existence de la methode (conf)
=========================================================*/ =========================================================*/
if( array_search($method, $this->repositories[$repository]) === false ){ // Si la methode n'est pas specifie dans la conf if( array_search($method, $this->repositories[$repository]) === false ){ // Si la methode n'est pas specifie dans la conf
$this->error = Error::UnknownMethod; $this->error = new Error(Err::UnknownMethod);
return false; // On retourne FALSE, si erreur return false; // On retourne FALSE, si erreur
} }

View File

@ -3,7 +3,6 @@
namespace database\repo; namespace database\repo;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \database\core\Repo; use \database\core\Repo;
use \error\core\Error;
use \manager\repo\cluster as clusterRepo; use \manager\repo\cluster as clusterRepo;
class action extends parentRepo{ class action extends parentRepo{

View File

@ -3,7 +3,7 @@
namespace database\repo; namespace database\repo;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \database\core\Repo; use \database\core\Repo;
use \error\core\Error; use \error\core\Err;
use \orm\core\Table; use \orm\core\Table;
use \orm\core\Rows; use \orm\core\Rows;
@ -35,7 +35,7 @@
/* (2) Si aucun résultat, on retourne une erreur */ /* (2) Si aucun résultat, on retourne une erreur */
if( $targetCheck === false ) if( $targetCheck === false )
return Error::NoMatchFound; return Err::NoMatchFound;
/* [2] On vérifie l'existance du groupe 'source' /* [2] On vérifie l'existance du groupe 'source'
@ -49,7 +49,7 @@
/* (2) Si aucun résultat, on retourne une erreur */ /* (2) Si aucun résultat, on retourne une erreur */
if( $sourceCheck === false ) if( $sourceCheck === false )
return Error::NoMatchFound; return Err::NoMatchFound;
/* [3] On vérifie l'existance de l'action /* [3] On vérifie l'existance de l'action
@ -60,7 +60,7 @@
/* (2) Si aucun résultat, on retourne une erreur */ /* (2) Si aucun résultat, on retourne une erreur */
if( $actionCheck === false ) if( $actionCheck === false )
return Error::NoMatchFound; return Err::NoMatchFound;
/* [4] On vérifie que l'entrée n'existe pas déja /* [4] On vérifie que l'entrée n'existe pas déja
@ -74,7 +74,7 @@
/* (3) Si les données sont identiques pour au moins une entrée, on retourne un succès */ /* (3) Si les données sont identiques pour au moins une entrée, on retourne un succès */
foreach($checkAlready as $s=>$sameTarget) foreach($checkAlready as $s=>$sameTarget)
if( $sameTarget['id_source'] == $id_source && $sameTarget['id_action'] == $id_action ) if( $sameTarget['id_source'] == $id_source && $sameTarget['id_action'] == $id_action )
return Error::Success; return Err::Success;
} }
@ -92,10 +92,10 @@
/* (2) Si erreur SQL, on retourne une erreur */ /* (2) Si erreur SQL, on retourne une erreur */
if( !$inserted ) if( !$inserted )
return Error::RepoError; return Err::RepoError;
return Error::Success; return Err::Success;
} }
@ -134,7 +134,7 @@
/* (3) Si on a pas trouvé, on retourne une erreur */ /* (3) Si on a pas trouvé, on retourne une erreur */
if( is_null($existingId) ) if( is_null($existingId) )
return Error::NoMatchFound; return Err::NoMatchFound;
/* [2] On supprime la action /* [2] On supprime la action
@ -150,10 +150,10 @@
/* (2) Si erreur SQL, on retourne une erreur */ /* (2) Si erreur SQL, on retourne une erreur */
if( !$deleted || self::getById($existingId) !== false ) if( !$deleted || self::getById($existingId) !== false )
return Error::RepoError; return Err::RepoError;
return Error::Success; return Err::Success;
} }

View File

@ -3,7 +3,6 @@
namespace database\repo; namespace database\repo;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \database\core\Repo; use \database\core\Repo;
use \error\core\Error;
use \orm\core\Table; use \orm\core\Table;
use \orm\core\Rows; use \orm\core\Rows;

View File

@ -3,7 +3,6 @@
namespace database\repo; namespace database\repo;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \database\core\Repo; use \database\core\Repo;
use \error\core\Error;
use \manager\repo\cluster as clusterRepo; use \manager\repo\cluster as clusterRepo;
class global_state extends parentRepo{ class global_state extends parentRepo{

0
build/database/repo/history.php Normal file → Executable file
View File

View File

@ -2,7 +2,7 @@
namespace database\repo; namespace database\repo;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \error\core\Error; use \error\core\Err;
use \database\core\Repo; use \database\core\Repo;
use \orm\core\Table; use \orm\core\Table;
use \orm\core\Rows; use \orm\core\Rows;
@ -76,7 +76,7 @@
// Si le groupe n'existe pas // Si le groupe n'existe pas
if( $cluster === false ) if( $cluster === false )
return Error::NoMatchFound; return Err::NoMatchFound;
/* (2) On récupère l'utilisateur */ /* (2) On récupère l'utilisateur */
$machineR = Table::get('machine') $machineR = Table::get('machine')
@ -88,7 +88,7 @@
// Si l'utilisateur n'existe pas // Si l'utilisateur n'existe pas
if( $machine === false ) if( $machine === false )
return Error::NoMatchFound; return Err::NoMatchFound;
/* (3) On vérifie qu'il n'y a pas déja d'appartenance */ /* (3) On vérifie qu'il n'y a pas déja d'appartenance */
$cluster_mergeR = Table::get('machine_cluster_merge') $cluster_mergeR = Table::get('machine_cluster_merge')
@ -100,7 +100,7 @@
// Si la relation existe déja, on ne fait rien // Si la relation existe déja, on ne fait rien
if( $cluster_merge_exists !== false ) if( $cluster_merge_exists !== false )
return Error::Success; return Err::Success;
@ -117,13 +117,13 @@
/* (2) Si erreur, on la retourne */ /* (2) Si erreur, on la retourne */
if( !$inserted ) if( !$inserted )
return Error::RepoError; return Err::RepoError;
/* (3) On vérifie quand même que l'entrée existe */ /* (3) On vérifie quand même que l'entrée existe */
$cluster_merge_inserted = $cluster_mergeR->fetch(); $cluster_merge_inserted = $cluster_mergeR->fetch();
/* (4) Sinon, on renvoie que tout s'est bien passé */ /* (4) Sinon, on renvoie que tout s'est bien passé */
return is_array($cluster_merge_inserted) ? Error::Success : Error::RepoError; return is_array($cluster_merge_inserted) ? Err::Success : Err::RepoError;
} }
@ -150,7 +150,7 @@
/* (2) Si on ne trouve rien */ /* (2) Si on ne trouve rien */
if( $get_merge_id === false ) if( $get_merge_id === false )
return Error::NoMatchFound; return Err::NoMatchFound;
@ -162,15 +162,15 @@
// Si erreur // Si erreur
if( !$deleted ) if( !$deleted )
return Error::RepoError; return Err::RepoError;
/* [2] On verifie que l'association n'existe plus /* [2] On verifie que l'association n'existe plus
=========================================================*/ =========================================================*/
if( self::getMerge($id_warehouse, $id_machine_cluster, $id_machine) !== false ) if( self::getMerge($id_warehouse, $id_machine_cluster, $id_machine) !== false )
return Error::RepoError; return Err::RepoError;
return Error::Success; return Err::Success;
} }

View File

@ -3,7 +3,6 @@
namespace database\repo; namespace database\repo;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \database\core\Repo; use \database\core\Repo;
use \error\core\Error;
use \manager\repo\cluster as clusterRepo; use \manager\repo\cluster as clusterRepo;
class pin_merge extends parentRepo{ class pin_merge extends parentRepo{

View File

@ -3,7 +3,6 @@
namespace database\repo; namespace database\repo;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \database\core\Repo; use \database\core\Repo;
use \error\core\Error;
use \manager\repo\cluster as clusterRepo; use \manager\repo\cluster as clusterRepo;
class state extends parentRepo{ class state extends parentRepo{

View File

@ -2,7 +2,7 @@
namespace database\repo; namespace database\repo;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \error\core\Error; use \error\core\Err;
use \database\core\Repo; use \database\core\Repo;
use \orm\core\Table; use \orm\core\Table;
use \orm\core\Rows; use \orm\core\Rows;
@ -76,7 +76,7 @@
// Si le groupe n'existe pas // Si le groupe n'existe pas
if( $cluster === false ) if( $cluster === false )
return Error::NoMatchFound; return Err::NoMatchFound;
/* (2) On récupère l'utilisateur */ /* (2) On récupère l'utilisateur */
$userR = Table::get('user') $userR = Table::get('user')
@ -88,7 +88,7 @@
// Si l'utilisateur n'existe pas // Si l'utilisateur n'existe pas
if( $user === false ) if( $user === false )
return Error::NoMatchFound; return Err::NoMatchFound;
/* (3) On vérifie qu'il n'y a pas déja d'appartenance */ /* (3) On vérifie qu'il n'y a pas déja d'appartenance */
$cluster_mergeR = Table::get('user_cluster_merge') $cluster_mergeR = Table::get('user_cluster_merge')
@ -100,7 +100,7 @@
// Si la relation existe déja, on ne fait rien // Si la relation existe déja, on ne fait rien
if( $cluster_merge_exists !== false ) if( $cluster_merge_exists !== false )
return Error::Success; return Err::Success;
@ -117,13 +117,13 @@
/* (2) Si erreur, on la retourne */ /* (2) Si erreur, on la retourne */
if( !$inserted ) if( !$inserted )
return Error::RepoError; return Err::RepoError;
/* (3) On vérifie quand même que l'entrée existe */ /* (3) On vérifie quand même que l'entrée existe */
$cluster_merge_inserted = $cluster_mergeR->fetch(); $cluster_merge_inserted = $cluster_mergeR->fetch();
/* (4) Sinon, on renvoie que tout s'est bien passé */ /* (4) Sinon, on renvoie que tout s'est bien passé */
return is_array($cluster_merge_inserted) ? Error::Success : Error::RepoError; return is_array($cluster_merge_inserted) ? Err::Success : Err::RepoError;
} }
@ -149,7 +149,7 @@
/* (2) Si on ne trouve rien */ /* (2) Si on ne trouve rien */
if( $get_merge_id == false ) if( $get_merge_id == false )
return Error::NoMatchFound; return Err::NoMatchFound;
@ -161,15 +161,15 @@
// Si erreur // Si erreur
if( !$deleted ) if( !$deleted )
return Error::RepoError; return Err::RepoError;
/* [2] On verifie que l'association n'existe plus /* [2] On verifie que l'association n'existe plus
=========================================================*/ =========================================================*/
if( self::getMerge($id_warehouse, $id_user_cluster, $id_user) !== false ) if( self::getMerge($id_warehouse, $id_user_cluster, $id_user) !== false )
return Error::ModuleError; return Err::ModuleError;
return Error::Success; return Err::Success;
} }

109
build/error/core/Err.php Normal file
View File

@ -0,0 +1,109 @@
<?php
namespace error\core;
class Err{
/* [1] Success
=========================================================*/
const Success = 0;
/* [2] Fichiers / Ressources
=========================================================*/
/* (1) Parsage json/xml */
const ParsingFailed = 1;
/* (2) Fichier inexistant */
const UnreachableResource = 2;
/* (3) Erreur d'upload */
const UploadError = 3;
/* (4) Mauvais format de fichier */
const FormatError = 4;
/* [3] Permissions
=========================================================*/
/* (1) Token inexistant ou incorrect */
const TokenError = 5;
/* (2) Permission non autorisée */
const PermissionError = 6;
/* [4] API
=========================================================*/
/* (1) Le module n'est pas activé */
const DisabledModule = 7;
/* (2) Le @path n'est pas renseigne */
const MissingPath = 8;
/* (3) Verification de la coherence du chemin (existe dans la conf) */
const WrongPathModule = 9;
/* (4) Module non specifie dans la conf */
const UnknownModule = 10;
/* (5) Methode non specifie pour ce Module dans la conf */
const UnknownMethod = 11;
/* (6) Module non amorcable */
const UncallableModule = 12;
/* (7) Methode non amorcable */
const UncallableMethod = 13;
/* (8) Erreur méthode HTTP */
const UnknownHttpMethod = 14;
/* (9) Erreur de configuration */
const ConfigError = 15;
/* (10) Paramètre manquant */
const MissingParam = 16;
/* (11) Paramètre incorrect */
const WrongParam = 17;
/* (12) Erreur dans le traitement */
const ModuleError = 18;
/* [5] Database
=========================================================*/
/* (1) Base de données
---------------------------------------------------------*/
/* (1) Erreur lors de la creation d'un objet PDO (connection) */
const PDOConnection = 19;
/* (2) Repositories
---------------------------------------------------------*/
/* (1) Verification de la coherence du chemin (existe dans la conf) */
const WrongPathRepo = 20;
/* (2) Module non specifie dans la conf */
const UnknownRepo = 21;
/* (3) Erreur dans le traitement */
const RepoError = 22;
/* (3) ORM
---------------------------------------------------------*/
/* (1) Table n'existe pas */
const UnknownTable = 23;
/* (2) Pas permissions de lire le schéma */
const NotAllowedSchema = 24;
/* [6] Erreurs diverses
=========================================================*/
/* (1) Aucune donnée trouvée */
const NoMatchFound = 25;
/* (2) Mauvais chemin de template */
const UnknownTemplate = 26;
/* (3) géolocalisation échouée */
const UnknownAddress = 27;
/* (4) Erreur inconnue */
const UnknownError = 28;
}
?>

283
build/error/core/Error.php Executable file → Normal file
View File

@ -3,148 +3,189 @@
namespace error\core; namespace error\core;
use \error\core\Err;
class Error{ class Error{
/* SUCCESS */ private $error = null;
const Success = 0; private $arguments = [];
/* Parsage json */ /* ERROR CONSTRUCTOR
const ParsingFailed = 1; *
* @error<const> Const error
* @arg1<String> [OPT] Argument 1
* @arg2<String> [OPT] Argument 2
* @arg...<String> [OPT] Argument ...
*
* @return instance<Error> Error instance
*
*/
public function __construct($const){
call_user_func_array([$this, 'set'], func_get_args());
}
/* ResourceDispatcher */ /* ERROR GETTER
*
* @return Err<Err::Constant> Error
*
*/
public function get(){ return $this->error; }
// Drapeaux invalides /* ERROR SETTER
const InvalidFlags = 2; *
* @error<const> Const error
* @arg1<String> [OPT] Argument 1
* @arg2<String> [OPT] Argument 2
* @arg...<String> [OPT] Argument ...
*
* @return instance<Error> Error instance
*
*/
public function set($const){
/* [1] On découpe les arguments
=========================================================*/
/* (1) On récupère l'erreur */
$this->error = !is_numeric($const) ? Err::UnknownError : $const;
// Fichier inexistant /* (2) On récupère les arguments */
const UnreachableResource = 3; $this->arguments = array_slice(func_get_args(), 1);
}
/* ModuleRequest */
// Le module n'est pas activé
const DisabledModule = 4;
// Le @path n'est pas renseigne
const MissingPath = 5;
// Verification de la coherence du chemin (existe dans la conf)
const WrongPathModule = 6;
// Module non specifie dans la conf
const UnknownModule = 7;
// Methode non specifie pour ce Module dans la conf
const UnknownMethod = 8;
// Methode inamorcable
const UncallableMethod = 9;
// Erreur de parametre(s)
const ParamError = 10;
// Erreur dans le traitement
const ModuleError = 11;
/* Repo */
// Verification de la coherence du chemin (existe dans la conf)
const WrongPathRepo = 12;
// Module non specifie dans la conf
const UnknownRepo = 13;
// Erreur dans le traitement
const RepoError = 14;
/* Database */
// Erreur lors de la creation d'un objet PDO (connection)
const PDOConnection = 15;
/* API token */
// Token inexistant ou faux
const TokenError = 16;
const PermissionError = 17;
/* Erreur d'UPLOAD */
const UploadError = 18;
// Mauvais format de fichier
const FormatError = 19;
/* Erreur de contenu */
// Aucune donnée trouvée
const NoMatchFound = 20;
/* Erreur de vues */
// Mauvais chemin de template
const UnknownTemplate = 21;
/* Erreur de l'ORM */
// Table n'existe pas
const UnknownTable = 22;
// Pas permissions de lire le schéma
const NotAllowedSchema = 23;
/* Erreur au niveau javascript */
//const JavascriptError = 20; // -> géré en js
/* EXPLICITE UN CODE D'ERREUR /* EXPLICITE UN CODE D'ERREUR
* *
* @error<Integer> Code d'erreur
*
* @return explicit<String> Description explicite du code d'erreur * @return explicit<String> Description explicite du code d'erreur
* *
*/ */
public static function explicit($error){ public function explicit(){
switch($error){ switch($this->error){
case self::Success: return "Tout s'est bien deroulé."; break; case Err::Success: return $this->Success(); break;
case Err::ParsingFailed: return $this->ParsingFailed(); break;
case Err::UnreachableResource: return $this->UnreachableResource(); break;
case Err::UploadError: return $this->UploadError(); break;
case Err::FormatError: return $this->FormatError(); break;
case Err::TokenError: return $this->TokenError(); break;
case Err::PermissionError: return $this->PermissionError(); break;
case Err::DisabledModule: return $this->DisabledModule(); break;
case Err::MissingPath: return $this->MissingPath(); break;
case Err::WrongPathModule: return $this->WrongPathModule(); break;
case Err::UnknownModule: return $this->UnknownModule(); break;
case Err::UnknownMethod: return $this->UnknownMethod(); break;
case Err::UncallableModule: return $this->UncallableModule(); break;
case Err::UncallableMethod: return $this->UncallableMethod(); break;
case Err::UnknownHttpMethod: return $this->UnknownHttpMethod(); break;
case Err::ConfigError: return $this->ConfigError(); break;
case Err::MissingParam: return $this->MissingParam(); break;
case Err::WrongParam: return $this->WrongParam(); break;
case Err::ModuleError: return $this->ModuleError(); break;
case Err::PDOConnection: return $this->PDOConnection(); break;
case Err::WrongPathRepo: return $this->WrongPathRepo(); break;
case Err::UnknownRepo: return $this->UnknownRepo(); break;
case Err::RepoError: return $this->RepoError(); break;
case Err::UnknownTable: return $this->UnknownTable(); break;
case Err::NotAllowedSchema: return $this->NotAllowedSchema(); break;
case Err::NoMatchFound: return $this->NoMatchFound(); break;
case Err::UnknownTemplate: return $this->UnknownTemplate(); break;
case Err::UnknownAddress: return $this->UnknownAddress(); break;
case Err::UnknownError: return $this->UnknownError(); break;
case self::ParsingFailed: return "La lecture du fichier JSON ou XML a echouée."; break; default: return $this->UnknownDebugError(); break;
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;
case self::UnknownModule: return "Le module n'existe pas."; break;
case self::UnknownRepo: return "Le repo n'existe pas."; break;
case self::UnknownMethod: return "Le méthode n'existe pas."; break;
case self::UncallableMethod: return "Le méthode n'est pas amorçable."; break;
case self::ParamError: return "Un ou plusieurs paramètres sont manquants ou incorrects."; break;
case self::ModuleError: return "Erreur lors du traitement du module."; break;
case self::RepoError: return "Erreur lors du traitement du repo."; break;
case self::PDOConnection: return "La connexion avec la base de données a echouée."; break;
case self::TokenError: return "Le token de connection est absent, érroné ou expiré."; break;
case self::PermissionError: return "Vous n'avez pas la permission d'effectuer cette action."; break;
case self::UploadError: return "Une erreur d'upload est survenue."; break;
case self::FormatError: return "Le fichier n'est pas au bon format."; break;
case self::NoMatchFound: return "Aucun résultat correspondant à la requête."; break;
case self::UnknownTemplate: return "Modèle inconnu."; break;
default: return "Erreur inconnue..."; break;
} }
// Erreur inconnue
return null;
} }
public static function setHttpCode($error){ private function Success(){
http_response_code( $error == self::Success ? 200 : 417 ); return 'all right';
}private function ParsingFailed(){
if( count($this->arguments) > 0 )
return $this->arguments[0].' parsing failed';
else
return 'parsing failed';
}private function UnreachableResource(){
return 'unreachable resource';
}private function UploadError(){
return 'upload error';
}private function FormatError(){
return 'format error';
}private function TokenError(){
return 'bad or expired token';
}private function PermissionError(){
return 'permission error';
}private function DisabledModule(){
return 'disabled module';
}private function MissingPath(){
return 'missing path';
}private function WrongPathModule(){
return 'wrong module\'s path';
}private function UnknownModule(){
if( count($this->arguments) > 0 )
return 'unknown module \''.$this->arguments[0].'\'';
else
return 'unknown module';
}private function UnknownMethod(){
if( count($this->arguments) > 0 )
return 'unknown method \''.$this->arguments[0].'\'';
else
return 'unknown method';
}private function UncallableModule(){
if( count($this->arguments) > 0 )
return 'uncallable module \''.$this->arguments[0].'\'';
else
return 'uncallable module';
}private function UncallableMethod(){
if( count($this->arguments) > 0 )
return 'uncallable method \''.$this->arguments[0].'\'';
else
return 'uncallable method';
}private function UnknownHttpMethod(){
return 'unknown HTTP method';
}private function ConfigError(){
return 'configuration error';
}private function MissingParam(){
if( count($this->arguments) > 0 )
return 'missing param \''.$this->arguments[0].'\'';
else
return 'missing param';
}private function WrongParam(){
if( count($this->arguments) > 0 )
if( count($this->arguments) > 1 )
return 'wrong param \''.$this->arguments[0].'\' expected to be of type \''.$this->arguments[1].'\'';
else
return 'wrong param \''.$this->arguments[0].'\'';
else
return 'wrong param';
}private function ModuleError(){
return 'module error';
}private function PDOConnection(){
return 'database error';
}private function WrongPathRepo(){
return 'wrong repository\'s path';
}private function UnknownRepo(){
return 'unknown repository';
}private function RepoError(){
return 'repository error';
}private function UnknownTable(){
return 'unknown table';
}private function NotAllowedSchema(){
return 'schema browsing not allowed';
}private function NoMatchFound(){
return 'no match found';
}private function UnknownTemplate(){
return 'unknown template';
}private function UnknownAddress(){
return 'unknown';
}private function UnknownError(){
return 'unknown error';
}private function UnknownDebugError(){
return 'unknown debug error';
}
public function setHttpCode(){
http_response_code( $this->error == Err::Success ? 200 : 417 );
} }
} }
?> ?>

View File

@ -0,0 +1,198 @@
<?php
namespace http\core;
class HttpRequest{
/* [0] Constants
=========================================================*/
/* (1) Content-Type */
const CT_BINARY = 0; // unknown
const CT_TEXT = 1;
const CT_JSON = 2;
const CT_YAML = 3;
const CT_MULTIPART_FORM_DATA = 4;
const CT_X_WWW_FORM_URLENCODED = 5;
/* [1] Attributes
=========================================================*/
private $uri;
private $headers;
private $method;
private $postdata;
private $getdata;
private $type;
private $body;
/* [2] Constructs an HTTP Request based on environment
*
* @return instance<HttpRequest> auto-filled HTTP Request
*
=========================================================*/
public function __construct(){
/* [1] Define URI & Status Code & method
=========================================================*/
$this->uri = $_SERVER['REQUEST_URI'];
$this->method = $_SERVER['REQUEST_METHOD'];
/* [2] Define headers
=========================================================*/
$this->headers = \getallheaders();
/* [3] Define default datasets (GET, POST)
=========================================================*/
$this->getdata = $_GET;
$this->postdata = $_POST;
/* [4] Define BODY & its type
=========================================================*/
/* (1) Default: set plain/text body */
$this->body = \file_get_contents('php://input');
/* (2) Fetch content type */
$this->type = self::getContentType($this->headers['Content-Type']);
/* [5] Parse BODY data -> POST
=========================================================*/
$this->parseBody();
}
/* GET CONSTANT CT_* FROM `Content-Type` HEADER
*
* @pContentType<String> `Content-Type` header value
*
* @return type<int> Constant value
*
*/
private static function getContentType($pContentType=null){
/* [1] Checks argv
=========================================================*/
if( is_null($pContentType) )
$pContentType = $_SERVER['CONTENT_TYPE'];
/* [2] Checks types
=========================================================*/
/* (1) Form Data Types
---------------------------------------------------------*/
/* (1) multipart/form-data */
if( preg_match('/^multipart\/form\-data; boundary=(.+)$/i', $pContentType) )
return self::CT_MULTIPART_FORM_DATA;
/* (2) application/x-www-form-urlencoded */
if( preg_match('/^application\/x\-www\-form\-urlencoded/i', $pContentType) )
return self::CT_X_WWW_FORM_URLENCODED;
/* (2) Data types
---------------------------------------------------------*/
/* (1) Basic JSON content type */
if( preg_match('/^application\/json/i', $pContentType) )
return self::CT_JSON;
/* (2) Basic YAML content type */
if( preg_match('/^application\/yaml/i', $pContentType) )
return self::CT_YAML;
/* (3) Basic TEXT content type */
if( preg_match('/text\/[a-z]+/', $pContentType) )
return self::CT_TEXT;
/* (3) Default Type
---------------------------------------------------------*/
return self::CT_BINARY;
}
/* PARSES BODY DATA
*
*/
private function parseBody(){
/* [1] If empty body -> do nothing
=========================================================*/
if( strlen($this->body) === 0 )
return true;
/* [2] Management for each ContentType
=========================================================*/
switch($this->type){
/* (1) multipart/form-data -> parse for not-POST methods
---------------------------------------------------------*/
case self::CT_MULTIPART_FORM_DATA:
/* (1) Fetch the boundary */
if( !preg_match('/boundary=(.+)$/i', $this->headers['Content-Type'], $match) )
return false;
$boundary = $match[1];
/* (2) Break body into parts */
$splitter = "/(?:\n|\r\n|--)*$boundary(?:\n|\r\n|--)?/im";
$parts = preg_split($splitter, $this->body);
/* (3) Process parts */
foreach($parts as $part)
if( preg_match('/^Content\-Disposition: form\-data; name=\"([^"]+)\"(?:\n|\r\n){2}(.+)$/mi', $part, $match) )
$this->postdata[$match[1]] = $match[2];
/* (4) Erases body */
$this->body = '';
break;
/* (2) application/x-www-form-urlencoded -> parse for not-POST methods
---------------------------------------------------------*/
case self::CT_X_WWW_FORM_URLENCODED:
/* Auto parse builtin-php function */
parse_str($this->body, $this->postdata);
/* Erases body */
$this->body = '';
break;
/* (3) application/json -> parse if no error
---------------------------------------------------------*/
case self::CT_JSON:
/* (1) Decode body content */
$decoded = json_decode($this->body, true);
/* (2) If error -> do nothing */
if( is_null($decoded) )
return;
/* (3) Parse body into body */
$this->body = $decoded;
break;
/* (4) application/yaml -> parse if no error
---------------------------------------------------------*/
case self::CT_YAML:
break;
}
}
public function BODY(){ return $this->body; }
public function POST(){ return $this->postdata; }
public function GET(){ return $this->getdata; }
public function HEADERS(){ return $this->headers; }
public function METHOD(){ return $this->method; }
public function URI(){ return $this->uri; }
}

View File

@ -3,10 +3,11 @@
namespace viewer\core; namespace viewer\core;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
class Viewer{ class Viewer{
public $error = Error::Success; public $error;
private $template; private $template;
@ -25,9 +26,12 @@
* *
*/ */
public function __construct($template, $args){ public function __construct($template, $args){
$this->error = new Error(Err::Success);
// Si pas parametre manquant, on quitte // Si pas parametre manquant, on quitte
if( $template == null ){ if( $template == null ){
$this->error = Error::MissingPath; $this->error = new Error(Err::MissingPath);
return false; return false;
} }
@ -94,7 +98,7 @@
/* [1] On vérifie le format /* [1] On vérifie le format
=========================================================*/ =========================================================*/
if( !preg_match('/^(\w+)\.(\w+)$/i', $template, $match) ){ if( !preg_match('/^(\w+)\.(\w+)$/i', $template, $match) ){
$this->error = Error::ParamError; $this->error = new Error(Err::ParamError);
return false; return false;
} }
@ -106,13 +110,13 @@
/* (1) On vérifie que la classe existe */ /* (1) On vérifie que la classe existe */
if( !class_exists($class) ){ if( !class_exists($class) ){
$this->error = Error::UnknownTemplate; $this->error = new Error(Err::UnknownTemplate);
return false; return false;
} }
/* (2) On vérifie que la méthode existe */ /* (2) On vérifie que la méthode existe */
if( !method_exists($class, $method) ){ if( !method_exists($class, $method) ){
$this->error = Error::UnknownTemplate; $this->error = new Error(Err::UnknownTemplate);
return false; return false;
} }

View File

@ -1,8 +1,9 @@
<?php <?php
namespace viewer\view\group; namespace viewer\view\group;
use \api\core\ModuleRequest; use \api\core\Request;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
use \api\core\Authentification; use \api\core\Authentification;
class group_choice{ class group_choice{
@ -24,11 +25,11 @@
=========================================================*/ =========================================================*/
$twig->addFunction(new \Twig_Function('f_clusters', function($class){ $twig->addFunction(new \Twig_Function('f_clusters', function($class){
/* (1) On récupère les groupes */ /* (1) On récupère les groupes */
$getClustersReq = new ModuleRequest('clusterDefault/getAll', ['class' => $class]); $getClustersReq = new Request('clusterDefault/getAll', ['class' => $class]);
$getClusters = $getClustersReq->dispatch(); $getClusters = $getClustersReq->dispatch();
/* (2) si erreur, on retourne rien par défaut */ /* (2) si erreur, on retourne rien par défaut */
if( $getClusters->error != Error::Success ) if( $getClusters->error->get() != Err::Success )
return []; return [];
/* (3) On enregistre le résultat */ /* (3) On enregistre le résultat */

0
build/viewer/view/group/group_choice.twig Normal file → Executable file
View File

19
build/viewer/view/group/members_choice.php Normal file → Executable file
View File

@ -2,7 +2,8 @@
namespace viewer\view\group; namespace viewer\view\group;
use \viewer\core\Viewer; use \viewer\core\Viewer;
use \api\core\ModuleRequest; use \api\core\Request;
use \error\core\Err;
use \error\core\Error; use \error\core\Error;
use \api\core\Authentification; use \api\core\Authentification;
@ -16,14 +17,14 @@
return Viewer::$htmlError; return Viewer::$htmlError;
/* (2) On récupère le groupe */ /* (2) On récupère le groupe */
$checktypeRequest = new ModuleRequest('clusterDefault/getById', [ $checktypeRequest = new Request('clusterDefault/getById', [
'id_cluster' => $params['id_cluster'], 'id_cluster' => $params['id_cluster'],
'class' => $params['class'] 'class' => $params['class']
]); ]);
$checktypeResponse = $checktypeRequest->dispatch(); $checktypeResponse = $checktypeRequest->dispatch();
/* (3) Si on ne le trouve pas, on retourne une erreur */ /* (3) Si on ne le trouve pas, on retourne une erreur */
if( $checktypeResponse->error != Error::Success ) if( $checktypeResponse->error->get() != Err::Success )
return Viewer::$htmlError; return Viewer::$htmlError;
/* (4) On récupère les données du groupe */ /* (4) On récupère les données du groupe */
@ -52,14 +53,14 @@
=========================================================*/ =========================================================*/
/* (1) On exécute la requête */ /* (1) On exécute la requête */
$getmembersRequest = new ModuleRequest('clusterDefault/getMembers', [ $getmembersRequest = new Request('clusterDefault/getMembers', [
'id_cluster' => $id_cluster, 'id_cluster' => $id_cluster,
'class' => $class 'class' => $class
]); ]);
$getmembersResponse = $getmembersRequest->dispatch(); $getmembersResponse = $getmembersRequest->dispatch();
/* (2) Si erreur, on retourne rien par défaut */ /* (2) Si erreur, on retourne rien par défaut */
if( $getmembersResponse->error != Error::Success ) if( $getmembersResponse->error->get() != Err::Success )
return []; return [];
/* (3) On récupère la liste des UID uniquement */ /* (3) On récupère la liste des UID uniquement */
@ -74,12 +75,12 @@
if( $class == 0 ){ if( $class == 0 ){
/* (2) On exécute la requête */ /* (2) On exécute la requête */
$getusersRequest = new ModuleRequest('userDefault/getAll'); $getusersRequest = new Request('userDefault/getAll');
// On recupere la reponse // On recupere la reponse
$getusersResponse = $getusersRequest->dispatch(); $getusersResponse = $getusersRequest->dispatch();
/* (3) si erreur, on affiche l'explicitation */ /* (3) si erreur, on affiche l'explicitation */
if( $getusersResponse->error != Error::Success ) if( $getusersResponse->error->get() != Err::Success )
return []; return [];
/* (4) On récupère la liste des utilisateurs */ /* (4) On récupère la liste des utilisateurs */
@ -97,12 +98,12 @@
}else{ }else{
/* (2) On exécute la requête */ /* (2) On exécute la requête */
$getmachinesRequest = new ModuleRequest('machineDefault/getAll'); $getmachinesRequest = new Request('machineDefault/getAll');
// On recupere la reponse // On recupere la reponse
$getmachinesResponse = $getmachinesRequest->dispatch(); $getmachinesResponse = $getmachinesRequest->dispatch();
/* (3) si erreur, on affiche l'explicitation */ /* (3) si erreur, on affiche l'explicitation */
if( $getmachinesResponse->error != Error::Success ) if( $getmachinesResponse->error->get() != Err::Success )
return []; return [];
/* (4) On récupère la liste des machines */ /* (4) On récupère la liste des machines */

0
build/viewer/view/group/members_choice.twig Normal file → Executable file
View File

View File

@ -2,8 +2,9 @@
namespace viewer\view\group; namespace viewer\view\group;
use \viewer\core\Viewer; use \viewer\core\Viewer;
use \api\core\ModuleRequest; use \api\core\Request;
use \api\core\Authentification; use \api\core\Authentification;
use \error\core\Err;
use \error\core\Error; use \error\core\Error;
class permission{ class permission{
@ -32,14 +33,14 @@
/* [3] Store functions /* [3] Store functions
=========================================================*/ =========================================================*/
$twig->addFunction(new \Twig_Function('f_clusters', function(){ $twig->addFunction(new \Twig_Function('f_clusters', function(){
$request = new ModuleRequest('clusterDefault/getAll', [ $request = new Request('clusterDefault/getAll', [
'class' => 1 'class' => 1
]); ]);
$answer = $request->dispatch(); $answer = $request->dispatch();
// si erreur, on affiche rien par défaut // si erreur, on affiche rien par défaut
if( $answer->error != Error::Success ) if( $answer->error->get() != Err::Success )
return []; return [];
return $answer->get('clusters'); return $answer->get('clusters');
@ -47,7 +48,7 @@
})); }));
$twig->addFunction(new \Twig_Function('f_nbmachines', function($id_cluster){ $twig->addFunction(new \Twig_Function('f_nbmachines', function($id_cluster){
$machineReq = new ModuleRequest('clusterDefault/getMembers', [ $machineReq = new Request('clusterDefault/getMembers', [
'id_cluster' => (int) $id_cluster, 'id_cluster' => (int) $id_cluster,
'class' => 1 'class' => 1
]); ]);
@ -55,26 +56,26 @@
$machineRes = $machineReq->dispatch(); $machineRes = $machineReq->dispatch();
// si erreur, on affiche rien par défaut // si erreur, on affiche rien par défaut
if( $machineRes->error != Error::Success ) if( $machineRes->error->get() != Err::Success )
return []; return [];
return count($machineRes->get('members')); return count($machineRes->get('members'));
})); }));
$twig->addFunction(new \Twig_Function('f_permissions', function(){ $twig->addFunction(new \Twig_Function('f_permissions', function(){
$permReq = new ModuleRequest('clusterDefault/getPermissions', []); $permReq = new Request('clusterDefault/getPermissions', []);
$permRes = $permReq->dispatch(); $permRes = $permReq->dispatch();
// si erreur, on affiche rien par défaut // si erreur, on affiche rien par défaut
if( $permRes->error != Error::Success ) if( $permRes->error->get() != Err::Success )
return []; return [];
return $permRes->get('permissions'); return $permRes->get('permissions');
})); }));
$twig->addFunction(new \Twig_Function('f_userclusters', function($id_cluster, $id_permission){ $twig->addFunction(new \Twig_Function('f_userclusters', function($id_cluster, $id_permission){
$ucReq = new ModuleRequest('clusterDefault/getAuthenticatedClusters', [ $ucReq = new Request('clusterDefault/getAuthenticatedClusters', [
'id_target' => $id_cluster, 'id_target' => $id_cluster,
'id_action' => $id_permission 'id_action' => $id_permission
]); ]);
@ -82,7 +83,7 @@
$ucRes = $ucReq->dispatch(); $ucRes = $ucReq->dispatch();
// si erreur, on affiche rien par défaut // si erreur, on affiche rien par défaut
if( $ucRes->error != Error::Success ) if( $ucRes->error->get() != Err::Success )
return []; return [];
return $ucRes->get('clusters'); return $ucRes->get('clusters');

0
build/viewer/view/group/permission.twig Normal file → Executable file
View File

View File

@ -1,8 +1,9 @@
<?php <?php
namespace viewer\view\group; namespace viewer\view\group;
use \api\core\ModuleRequest; use \api\core\Request;
use \api\core\Authentification; use \api\core\Authentification;
use \error\core\Err;
use \error\core\Error; use \error\core\Error;
class view{ class view{
@ -31,11 +32,11 @@
=========================================================*/ =========================================================*/
$twig->addFunction(new \Twig_Function('f_clusters', function($class){ $twig->addFunction(new \Twig_Function('f_clusters', function($class){
/* (1) On récupère les groupes */ /* (1) On récupère les groupes */
$getClustersReq = new ModuleRequest('clusterDefault/getAll', ['class' => $class]); $getClustersReq = new Request('clusterDefault/getAll', ['class' => $class]);
$getClusters = $getClustersReq->dispatch(); $getClusters = $getClustersReq->dispatch();
/* (2) si erreur, on retourne rien par défaut */ /* (2) si erreur, on retourne rien par défaut */
if( $getClusters->error != Error::Success ) if( $getClusters->error->get() != Err::Success )
return []; return [];
/* (3) On enregistre le résultat */ /* (3) On enregistre le résultat */
@ -43,7 +44,7 @@
})); }));
$twig->addFunction(new \Twig_Function('f_members', function($id_cluster, $class){ $twig->addFunction(new \Twig_Function('f_members', function($id_cluster, $class){
$membersReq = new ModuleRequest('clusterDefault/getMembers', [ $membersReq = new Request('clusterDefault/getMembers', [
'id_cluster' => (int) $id_cluster, 'id_cluster' => (int) $id_cluster,
'class' => $class 'class' => $class
]); ]);
@ -51,7 +52,7 @@
$membersRes = $membersReq->dispatch(); $membersRes = $membersReq->dispatch();
// //
// si erreur, on affiche rien par défaut // si erreur, on affiche rien par défaut
if( $membersRes->error != Error::Success ) if( $membersRes->error->get() != Err::Success )
return []; return [];
return $membersRes->get('members'); return $membersRes->get('members');

0
build/viewer/view/group/view.twig Normal file → Executable file
View File

7
build/viewer/view/history/view.php Normal file → Executable file
View File

@ -2,8 +2,9 @@
namespace viewer\view\history; namespace viewer\view\history;
use \api\core\ModuleRequest; use \api\core\Request;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
class view{ class view{
@ -24,12 +25,12 @@
/* [3] Store functions /* [3] Store functions
=========================================================*/ =========================================================*/
$twig->addFunction(new \Twig_Function('f_history', function(){ $twig->addFunction(new \Twig_Function('f_history', function(){
$req = new ModuleRequest('historyDefault/getAll', []); $req = new Request('historyDefault/getAll', []);
$res = $req->dispatch(); $res = $req->dispatch();
// si erreur, on retourne rien par défaut // si erreur, on retourne rien par défaut
if( $res->error != Error::Success ) if( $res->error->get() != Err::Success )
return []; return [];
return $res->get('history'); return $res->get('history');

0
build/viewer/view/history/view.twig Normal file → Executable file
View File

View File

@ -2,9 +2,10 @@
namespace viewer\view\machine; namespace viewer\view\machine;
use \viewer\core\Viewer; use \viewer\core\Viewer;
use \api\core\ModuleRequest; use \api\core\Request;
use \api\core\Authentification; use \api\core\Authentification;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
class groups{ class groups{
@ -31,14 +32,14 @@
/* [3] Store functions /* [3] Store functions
=========================================================*/ =========================================================*/
$twig->addFunction(new \Twig_Function('f_clusters', function(){ $twig->addFunction(new \Twig_Function('f_clusters', function(){
$request = new ModuleRequest('clusterDefault/getAll', [ $request = new Request('clusterDefault/getAll', [
'class' => 1 'class' => 1
]); ]);
$answer = $request->dispatch(); $answer = $request->dispatch();
// si erreur, on affiche rien par défaut // si erreur, on affiche rien par défaut
if( $answer->error != Error::Success ) if( $answer->error->get() != Err::Success )
return []; return [];
return $answer->get('clusters'); return $answer->get('clusters');
@ -46,14 +47,14 @@
})); }));
$twig->addFunction(new \Twig_Function('f_machines', function($id_cluster){ $twig->addFunction(new \Twig_Function('f_machines', function($id_cluster){
$usersReq = new ModuleRequest('clusterDefault/getMembers', [ $usersReq = new Request('clusterDefault/getMembers', [
'id_cluster' => (int) $id_cluster, 'id_cluster' => (int) $id_cluster,
'class' => 1 'class' => 1
]); ]);
$usersRes = $usersReq->dispatch(); $usersRes = $usersReq->dispatch();
// si erreur, on affiche rien par défaut // si erreur, on affiche rien par défaut
if( $usersRes->error != Error::Success ) if( $usersRes->error->get() != Err::Success )
return []; return [];
return $usersRes->get('members'); return $usersRes->get('members');

0
build/viewer/view/machine/groups.twig Normal file → Executable file
View File

View File

@ -2,9 +2,9 @@
namespace viewer\view\machine; namespace viewer\view\machine;
use \viewer\core\Viewer; use \viewer\core\Viewer;
use \api\core\ModuleRequest; use \api\core\Request;
use \api\core\Authentification;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
class view{ class view{
@ -30,24 +30,24 @@
/* [3] Store functions /* [3] Store functions
=========================================================*/ =========================================================*/
$twig->addFunction(new \Twig_Function('f_machines', function(){ $twig->addFunction(new \Twig_Function('f_machines', function(){
$request = new ModuleRequest('machineDefault/getAll'); // On utilise la methode 'getAll' du module 'machineDefault' $request = new Request('machineDefault/getAll'); // On utilise la methode 'getAll' du module 'machineDefault'
$answer = $request->dispatch(); // On recupere la reponse $answer = $request->dispatch(); // On recupere la reponse
// si erreur, on affiche rien par défaut // si erreur, on affiche rien par défaut
if( $answer->error != Error::Success ) if( $answer->error->get() != Err::Success )
return []; return [];
return $answer->get('machines'); return $answer->get('machines');
})); }));
$twig->addFunction(new \Twig_Function('f_clusters', function($id_machine){ $twig->addFunction(new \Twig_Function('f_clusters', function($id_machine){
$clustersReq = new ModuleRequest('machineDefault/getClusters', [ $clustersReq = new Request('machineDefault/getClusters', [
'id_machine' => (int) $id_machine 'id_machine' => (int) $id_machine
]); ]);
$clustersRes = $clustersReq->dispatch(); $clustersRes = $clustersReq->dispatch();
// si erreur, on affiche rien par défaut // si erreur, on affiche rien par défaut
if( $clustersRes->error != Error::Success ) if( $clustersRes->error->get() != Err::Success )
return []; return [];
return $clustersRes->get('clusters'); return $clustersRes->get('clusters');

0
build/viewer/view/machine/view.twig Normal file → Executable file
View File

View File

@ -2,9 +2,10 @@
namespace viewer\view\user; namespace viewer\view\user;
use \viewer\core\Viewer; use \viewer\core\Viewer;
use \api\core\ModuleRequest; use \api\core\Request;
use \api\core\Authentification; use \api\core\Authentification;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
class groups{ class groups{
@ -31,14 +32,14 @@
/* [3] Store functions /* [3] Store functions
=========================================================*/ =========================================================*/
$twig->addFunction(new \Twig_Function('f_clusters', function(){ $twig->addFunction(new \Twig_Function('f_clusters', function(){
$request = new ModuleRequest('clusterDefault/getAll', [ $request = new Request('clusterDefault/getAll', [
'class' => 0 'class' => 0
]); ]);
$answer = $request->dispatch(); $answer = $request->dispatch();
// si erreur, on affiche rien par défaut // si erreur, on affiche rien par défaut
if( $answer->error != Error::Success ) if( $answer->error->get() != Err::Success )
return []; return [];
return $answer->get('clusters'); return $answer->get('clusters');
@ -46,14 +47,14 @@
})); }));
$twig->addFunction(new \Twig_Function('f_users', function($id_cluster){ $twig->addFunction(new \Twig_Function('f_users', function($id_cluster){
$usersReq = new ModuleRequest('clusterDefault/getMembers', [ $usersReq = new Request('clusterDefault/getMembers', [
'id_cluster' => (int) $id_cluster, 'id_cluster' => (int) $id_cluster,
'class' => 0 'class' => 0
]); ]);
$usersRes = $usersReq->dispatch(); $usersRes = $usersReq->dispatch();
// si erreur, on affiche rien par défaut // si erreur, on affiche rien par défaut
if( $usersRes->error != Error::Success ) if( $usersRes->error->get() != Err::Success )
return []; return [];
return $usersRes->get('members'); return $usersRes->get('members');

0
build/viewer/view/user/groups.twig Normal file → Executable file
View File

View File

@ -1,9 +1,10 @@
<?php <?php
namespace viewer\view\user; namespace viewer\view\user;
use \api\core\ModuleRequest; use \api\core\Request;
use \api\core\Authentification; use \api\core\Authentification;
use \error\core\Error; use \error\core\Error;
use \error\core\Err;
class view{ class view{
@ -32,22 +33,22 @@
=========================================================*/ =========================================================*/
$twig->addFunction(new \Twig_Function('f_users', function(){ $twig->addFunction(new \Twig_Function('f_users', function(){
$request = new ModuleRequest('userDefault/getAll'); // On utilise la methode 'getAll' du module 'userDefault' $request = new Request('userDefault/getAll'); // On utilise la methode 'getAll' du module 'userDefault'
$answer = $request->dispatch(); // On recupere la reponse $answer = $request->dispatch(); // On recupere la reponse
// si erreur, on affiche rien // si erreur, on affiche rien
if( $answer->error != Error::Success ) if( $answer->error->get() != Err::Success )
return []; return [];
return $answer->get('users'); return $answer->get('users');
})); }));
$twig->addFunction(new \Twig_Function('f_clusters', function($id_user){ $twig->addFunction(new \Twig_Function('f_clusters', function($id_user){
$clustersReq = new ModuleRequest('userDefault/getClusters', [ 'id_user' => $id_user ]); $clustersReq = new Request('userDefault/getClusters', [ 'id_user' => $id_user ]);
$clustersRes = $clustersReq->dispatch(); $clustersRes = $clustersReq->dispatch();
/* (2) Gestion si erreur */ /* (2) Gestion si erreur */
if( $clustersRes->error != Error::Success ) if( $clustersRes->error->get() != Err::Success )
return []; return [];
return $clustersRes->get('clusters'); return $clustersRes->get('clusters');

0
build/viewer/view/user/view.twig Normal file → Executable file
View File

View File

@ -1,20 +1,20 @@
{ {
"module": { "module": {
"method": { "POST::method": {
"description": "Test de l'API", "description": "Test de l'API",
"permissions": ["warehouse"], "permissions": [],
"parameters": {} "parameters": {}
}, },
"markdown": { "POST::markdown": {
"description": "Retourne une description en markdown des différents modules de l'API", "description": "Retourne une description en markdown des différents modules de l'API",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"options": { "download": true }, "options": { "download": true },
"parameters": {} "parameters": {}
}, },
"apiBlueprint": { "POST::apiBlueprint": {
"description": "Retourne une documentation de l'API au format API Blueprint.", "description": "Retourne une documentation de l'API au format API Blueprint.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"options": { "download": true }, "options": { "download": true },
@ -25,7 +25,7 @@
"upload": { "upload": {
"call_log": { "POST::call_log": {
"description": "Upload d'un journal d'appel au format .xml. Retour des données de call_log/unserialize", "description": "Upload d'un journal d'appel au format .xml. Retour des données de call_log/unserialize",
"permissions": ["admin"], "permissions": ["admin"],
"parameters": { "parameters": {
@ -42,7 +42,7 @@
"download": { "download": {
"multiple": { "POST::multiple": {
"description": "Download des données relatives aux sujets donnés.", "description": "Download des données relatives aux sujets donnés.",
"permissions": ["admin"], "permissions": ["admin"],
"options": { "download": true }, "options": { "download": true },
@ -58,7 +58,7 @@
"authentificationDefault": { "authentificationDefault": {
"warehouse": { "POST::warehouse": {
"description": "Connexion de premier niveau : entrepot.", "description": "Connexion de premier niveau : entrepot.",
"permissions": [], "permissions": [],
"parameters": { "parameters": {
@ -70,7 +70,7 @@
} }
}, },
"admin": { "POST::admin": {
"description": "Connexion de second niveau : administrateur.", "description": "Connexion de second niveau : administrateur.",
"permissions": ["warehouse"], "permissions": ["warehouse"],
"parameters": { "parameters": {
@ -86,7 +86,7 @@
"userDefault": { "userDefault": {
"create": { "POST::create": {
"description": "Création d'un nouvel utilisateur.", "description": "Création d'un nouvel utilisateur.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -101,7 +101,7 @@
} }
}, },
"link": { "POST::link": {
"description": "Ajout d'un utilisateur à un groupe.", "description": "Ajout d'un utilisateur à un groupe.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -112,7 +112,7 @@
}, },
"unlink": { "POST::unlink": {
"description": "Retrait d'un utilisateur d'un groupe", "description": "Retrait d'un utilisateur d'un groupe",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -122,7 +122,7 @@
"output": {} "output": {}
}, },
"search": { "POST::search": {
"description": "Recherche d'un utilisateur par mots-clés.", "description": "Recherche d'un utilisateur par mots-clés.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -133,7 +133,7 @@
} }
}, },
"getAll": { "POST::getAll": {
"description": "Liste de tous les utilisateurs", "description": "Liste de tous les utilisateurs",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": {}, "parameters": {},
@ -142,7 +142,7 @@
} }
}, },
"getById": { "POST::getById": {
"description": "Retourne un utilisateur spécifique.", "description": "Retourne un utilisateur spécifique.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -153,7 +153,7 @@
} }
}, },
"getByCode": { "POST::getByCode": {
"description": "Retourne un utilisateur de Code RFID donné.", "description": "Retourne un utilisateur de Code RFID donné.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -164,7 +164,7 @@
} }
}, },
"getByUsername": { "POST::getByUsername": {
"description": "Retourne un utilisateur d'identifiant donné.", "description": "Retourne un utilisateur d'identifiant donné.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -175,7 +175,7 @@
} }
}, },
"getClusters": { "POST::getClusters": {
"description": "Retourne les groupes d'un utilisateur.", "description": "Retourne les groupes d'un utilisateur.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -186,7 +186,7 @@
} }
}, },
"edit": { "POST::edit": {
"description": "Modifie les attributs d'un utilisateur.", "description": "Modifie les attributs d'un utilisateur.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -205,7 +205,7 @@
} }
}, },
"delete": { "POST::delete": {
"description": "Suppression d'un utilisateur.", "description": "Suppression d'un utilisateur.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -221,7 +221,7 @@
"machineDefault": { "machineDefault": {
"sync": { "POST::sync": {
"description": "Synchronisation d'une machine.", "description": "Synchronisation d'une machine.",
"permissions": ["warehouse"], "permissions": ["warehouse"],
"parameters": { "parameters": {
@ -234,7 +234,7 @@
} }
}, },
"init": { "POST::init": {
"description": "Données d'initialisation d'une machine.", "description": "Données d'initialisation d'une machine.",
"permissions": ["warehouse"], "permissions": ["warehouse"],
"parameters": { "parameters": {
@ -245,7 +245,7 @@
} }
}, },
"create": { "POST::create": {
"description": "Création d'une nouvelle machine.", "description": "Création d'une nouvelle machine.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -256,7 +256,7 @@
} }
}, },
"link": { "POST::link": {
"description": "Ajout d'une machine à un groupe.", "description": "Ajout d'une machine à un groupe.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -266,7 +266,7 @@
"output": {} "output": {}
}, },
"unlink": { "POST::unlink": {
"description": "Retrait d'une machine d'un groupe.", "description": "Retrait d'une machine d'un groupe.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -276,7 +276,7 @@
"output": {} "output": {}
}, },
"search": { "POST::search": {
"description": "Recherche une machine par mots-clés.", "description": "Recherche une machine par mots-clés.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -287,7 +287,7 @@
} }
}, },
"getAll": { "POST::getAll": {
"description": "Retourne la liste de toutes les machines.", "description": "Retourne la liste de toutes les machines.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": {}, "parameters": {},
@ -296,7 +296,7 @@
} }
}, },
"getById": { "POST::getById": {
"description": "Retourne les données d'une machine.", "description": "Retourne les données d'une machine.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -307,7 +307,7 @@
} }
}, },
"getByName": { "POST::getByName": {
"description": "Retourne les données d'une machine de nom donné.", "description": "Retourne les données d'une machine de nom donné.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -318,7 +318,7 @@
} }
}, },
"getClusters": { "POST::getClusters": {
"description": "Retourne les groupes d'une machine.", "description": "Retourne les groupes d'une machine.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -329,7 +329,7 @@
} }
}, },
"edit": { "POST::edit": {
"description": "Modifie les attributs d'une machine.", "description": "Modifie les attributs d'une machine.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -339,7 +339,7 @@
"output": {} "output": {}
}, },
"delete": { "POST::delete": {
"description": "Supprime une machine.", "description": "Supprime une machine.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -355,7 +355,7 @@
"clusterDefault": { "clusterDefault": {
"create": { "POST::create": {
"description": "Création d'un nouveau groupe.", "description": "Création d'un nouveau groupe.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -367,7 +367,7 @@
} }
}, },
"search": { "POST::search": {
"description": "Recherche d'un groupe par mots-clés.", "description": "Recherche d'un groupe par mots-clés.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -379,7 +379,7 @@
} }
}, },
"getAll": { "POST::getAll": {
"description": "Liste de tous les groupes", "description": "Liste de tous les groupes",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -391,7 +391,7 @@
} }
}, },
"getById": { "POST::getById": {
"description": "Retourne un groupe spécifique.", "description": "Retourne un groupe spécifique.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -403,7 +403,7 @@
} }
}, },
"getByName": { "POST::getByName": {
"description": "Retourne un groupe de nom donné.", "description": "Retourne un groupe de nom donné.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -415,7 +415,7 @@
} }
}, },
"getMembers": { "POST::getMembers": {
"description": "Retourne les membres d'un groupe.", "description": "Retourne les membres d'un groupe.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -427,7 +427,7 @@
} }
}, },
"edit": { "POST::edit": {
"description": "Modifie le nom d'un groupe.", "description": "Modifie le nom d'un groupe.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -440,7 +440,7 @@
} }
}, },
"delete": { "POST::delete": {
"description": "Suppression d'un groupe.", "description": "Suppression d'un groupe.",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -452,7 +452,7 @@
} }
}, },
"addPermission": { "POST::addPermission": {
"description": "Ajout d'une permission", "description": "Ajout d'une permission",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -463,7 +463,7 @@
"output": {} "output": {}
}, },
"remPermission": { "POST::remPermission": {
"description": "Suppression d'une permission", "description": "Suppression d'une permission",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": { "parameters": {
@ -474,7 +474,7 @@
"output": {} "output": {}
}, },
"getPermissions": { "POST::getPermissions": {
"description": "Retourne la liste des permissions", "description": "Retourne la liste des permissions",
"permissions": ["warehouse","admin"], "permissions": ["warehouse","admin"],
"parameters": {}, "parameters": {},
@ -483,7 +483,7 @@
} }
}, },
"getAuthenticatedClusters": { "POST::getAuthenticatedClusters": {
"description": "Retourne les groupes d'utilisateurs ayant une action sur un groupe de machine.", "description": "Retourne les groupes d'utilisateurs ayant une action sur un groupe de machine.",
"permissions": ["warehouse","admin"], "permissions": ["warehouse","admin"],
"parameters": { "parameters": {
@ -498,7 +498,7 @@
}, },
"historyDefault": { "historyDefault": {
"getAll": { "POST::getAll": {
"description": "Retourne l'historique complet", "description": "Retourne l'historique complet",
"permissions": ["warehouse", "admin"], "permissions": ["warehouse", "admin"],
"parameters": {}, "parameters": {},

0
lib/composer.json Normal file → Executable file
View File

0
public_html/css/font.scss Normal file → Executable file
View File

0
public_html/css/font/Open Sans/Apache License.txt Normal file → Executable file
View File

0
public_html/css/font/Open Sans/L.ttf Normal file → Executable file
View File

0
public_html/css/font/Open Sans/Li.ttf Normal file → Executable file
View File

0
public_html/css/font/Open Sans/R.ttf Normal file → Executable file
View File

0
public_html/css/font/Open Sans/SB.ttf Normal file → Executable file
View File

0
public_html/css/font/Open Sans/b.ttf Normal file → Executable file
View File

0
public_html/css/font/Open Sans/bi.ttf Normal file → Executable file
View File

0
public_html/css/font/Open Sans/i.ttf Normal file → Executable file
View File

0
public_html/css/min/fonts.css Normal file → Executable file
View File

View File

@ -4,11 +4,9 @@
debug(); debug();
use \router\core\Router; use \router\core\Router;
use \api\core\Request;
use \api\core\ModuleRequest; use \api\core\Response;
use \api\core\ModuleResponse;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \error\core\Error;
use \api\core\Authentification; use \api\core\Authentification;
@ -26,8 +24,10 @@
/* [1] Gestion des authentifications et des droits /* [1] Gestion des authentifications et des droits
=========================================================*/ =========================================================*/
/* (1) On met à jour l'authentification et les permissions */ /* (1) On met à jour l'authentification et les permissions */
Authentification::check(); $authsys = new Authentification();
$auth = Authentification::auth(); $auth = $authsys::auth();
Request::setAuthSystem($authsys);
/* (2) On définit la page d'accueil */ /* (2) On définit la page d'accueil */
@ -87,7 +87,7 @@
// logout from admin // logout from admin
$R->get('logout/?', function(){ $R->get('logout/?', function(){
(new ModuleRequest('authentificationDefault/admin', ['username' => '0', 'password' => '']))->dispatch(); (new Request('authentificationDefault/admin', ['username' => '0', 'password' => '']))->dispatch();
header('Location: /'); header('Location: /');
}); });
@ -109,7 +109,7 @@
// warehouse logout // warehouse logout
$R->get('logout/?', function(){ $R->get('logout/?', function(){
(new ModuleRequest('authentificationDefault/warehouse', ['name' => '000', 'password' => '']))->dispatch(); (new Request('authentificationDefault/warehouse', ['name' => '000', 'password' => '']))->dispatch();
header('Location: /'); header('Location: /');
}); });
@ -133,12 +133,12 @@
/* (4) api/module/method -> Api */ /* (4) api/module/method -> Api */
$R->post('api(?:/(.*))/?', function($url){ $R->post('api(?:(/.*))/?', function($url){
$request = ModuleRequest::fromPost($url, $_POST); $request = Request::remote($url[0], $_POST);
$answer = $request->dispatch(); $answer = $request->dispatch();
// Si c'est une réponse (et non un download) // Si c'est une réponse (et non un download)
if( $answer instanceof ModuleResponse ){ if( $answer instanceof Response ){
header('Content-Type: application/json; charset=UTF-8'); header('Content-Type: application/json; charset=UTF-8');
echo $answer->serialize(); echo $answer->serialize();
} }

View File

@ -1,9 +1,9 @@
<?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) ); <?php define('__ROOT__', dirname(dirname(dirname(__DIR__))) );
require_once __ROOT__.'/autoloader.php'; require_once __ROOT__.'/autoloader.php';
$_SESSION['history'] = []; $_SESSION['history'] = [];
if( !isset($_COOKIE['mac_password']) || !isset($_COOKIE['mac_count']) ){ if( !isset($_COOKIE['mac_password']) || !isset($_COOKIE['mac_count']) ){
$_COOKIE['mac_count'] = 10; $_COOKIE['mac_count'] = 10;
$_COOKIE['mac_password'] = 'macPassword'; $_COOKIE['mac_password'] = 'macPassword';
@ -11,7 +11,7 @@
setcookie('mac_password', $_COOKIE['mac_password'], time()+3600*24*365, '/'); setcookie('mac_password', $_COOKIE['mac_password'], time()+3600*24*365, '/');
header('Refresh: 0'); header('Refresh: 0');
} }
?> ?>
@ -21,7 +21,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Virtual Client</title> <title>Virtual Client</title>
@ -191,8 +191,8 @@
</style> </style>
</head> </head>
<body> <body>
<div id='machine-box'> <div id='machine-box'>
@ -418,5 +418,5 @@
}, false); }, false);
</script> </script>
</body> </body>
</html> </html>

View File

@ -152,7 +152,7 @@
api.send(request, function(response){ api.send(request, function(response){
// Si erreur de module // Si erreur de module
if( response.ModuleError != 0 ){ if( response.error != 0 ){
errBox.innerHTML = 'Format des champs incorrect.'; errBox.innerHTML = 'Format des champs incorrect.';
aPassword.value = ''; aPassword.value = '';
return false; return false;
@ -189,7 +189,7 @@
/* (2) On envoie la requête */ /* (2) On envoie la requête */
api.send(request, function(response){ api.send(request, function(response){
if( response.ModuleError == 0 ){ if( response.error == 0 ){
if( response.status == false ) if( response.status == false )
document.location = '/'; document.location = '/';
} }

View File

@ -1,7 +1,6 @@
<?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) ); <?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) );
require_once __ROOT__.'/autoloader.php'; require_once __ROOT__.'/autoloader.php';
use \api\core\ModuleRequest; use \api\core\Request;
use \error\core\Error;
use \orm\core\Table; use \orm\core\Table;
?> ?>

0
public_html/view/css/admin.css Normal file → Executable file
View File

0
public_html/view/css/analytics.css Normal file → Executable file
View File

0
public_html/view/css/groups.css Normal file → Executable file
View File

0
public_html/view/css/history.css Normal file → Executable file
View File

0
public_html/view/css/machines.css Normal file → Executable file
View File

0
public_html/view/css/profile.css Normal file → Executable file
View File

0
public_html/view/css/settings.css Normal file → Executable file
View File

0
public_html/view/css/users.css Normal file → Executable file
View File

0
public_html/view/css/view.css Normal file → Executable file
View File

0
public_html/view/css/warehouse.css Normal file → Executable file
View File

View File

@ -1,8 +1,7 @@
<?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) ); <?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) );
require_once __ROOT__.'/autoloader.php'; require_once __ROOT__.'/autoloader.php';
use \viewer\core\Viewer; use \viewer\core\Viewer;
use \api\core\ModuleRequest; use \api\core\Request;
use \error\core\Error;
use \database\core\Repo; use \database\core\Repo;
?> ?>
@ -56,7 +55,7 @@
/* [1] VIEW -> Liste des groupes /* [1] VIEW -> Liste des groupes
=========================================================*/ =========================================================*/
$request = new ModuleRequest('clusterDefault/getAll'); // On utilise la methode 'getAll' du module 'groupDefault' $request = new Request('clusterDefault/getAll'); // On utilise la methode 'getAll' du module 'groupDefault'
$answer = $request->dispatch(); // On recupere la reponse $answer = $request->dispatch(); // On recupere la reponse
echo "<section data-sublink='view' class='list'>"; echo "<section data-sublink='view' class='list'>";

View File

@ -1,7 +1,6 @@
<?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) ); <?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) );
require_once __ROOT__.'/autoloader.php'; require_once __ROOT__.'/autoloader.php';
use \api\core\ModuleRequest; use \api\core\Request;
use \error\core\Error;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \database\core\Repo; use \database\core\Repo;
use \viewer\core\Viewer; use \viewer\core\Viewer;

0
public_html/view/js/admin.js Normal file → Executable file
View File

0
public_html/view/js/profile.js Normal file → Executable file
View File

0
public_html/view/js/settings.js Normal file → Executable file
View File

0
public_html/view/js/view.js Normal file → Executable file
View File

0
public_html/view/js/warehouse.js Normal file → Executable file
View File

View File

@ -1,8 +1,7 @@
<?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) ); <?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) );
require_once __ROOT__.'/autoloader.php'; require_once __ROOT__.'/autoloader.php';
use \viewer\core\Viewer; use \viewer\core\Viewer;
use \api\core\ModuleRequest; use \api\core\Request;
use \error\core\Error;
use \database\core\Repo; use \database\core\Repo;
?> ?>

View File

@ -1,7 +1,6 @@
<?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) ); <?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) );
require_once __ROOT__.'/autoloader.php'; require_once __ROOT__.'/autoloader.php';
use \api\core\ModuleRequest; use \api\core\Request;
use \error\core\Error;
?> ?>

View File

@ -1,7 +1,6 @@
<?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) ); <?php define('__ROOT__', dirname(dirname(dirname(__FILE__))) );
require_once __ROOT__.'/autoloader.php'; require_once __ROOT__.'/autoloader.php';
use \api\core\ModuleRequest; use \api\core\Request;
use \error\core\Error;
?> ?>
<!-- [1] Gestion du sous-menu de gauche --> <!-- [1] Gestion du sous-menu de gauche -->

View File

@ -1,7 +1,6 @@
<?php <?php
require_once '../../autoloader.php'; require_once '../../autoloader.php';
use \api\core\ModuleRequest; use \api\core\Request;
use \error\core\Error;
use \viewer\core\Viewer; use \viewer\core\Viewer;
use \database\core\Repo; use \database\core\Repo;
?> ?>

View File

@ -138,8 +138,9 @@
api.send(request, function(response){ api.send(request, function(response){
console.warn(response);
// Si erreur de module // Si erreur de module
if( response.ModuleError != 0 ){ if( response.error != 0 ){
errBox.innerHTML = 'Format des champs incorrect.'; errBox.innerHTML = 'Format des champs incorrect.';
wPassword.value = ''; wPassword.value = '';
return false; return false;