Gestion pour les modules des types de parametres
Tous les params (s'ils ont un type défini) sont vérifiés + les params sont nommés et envoyés en POST au lieu de tous dans le tableau post "data"
This commit is contained in:
parent
2f642c7087
commit
2a736d636b
|
@ -1,28 +1,58 @@
|
||||||
{
|
{
|
||||||
|
|
||||||
"users": [
|
"users": {
|
||||||
"login",
|
"login": {
|
||||||
"getById",
|
"description": "Test de connexion avec un login (identifiant ou adresse mail) et un mot de passe.",
|
||||||
"getAll",
|
"parameters": {
|
||||||
|
"login": { "description": "Identifiant ou adresse mail", "type": "varchar(255)" },
|
||||||
"create",
|
"password": { "description": "Mot de passe", "type":"text" }
|
||||||
"edit",
|
}
|
||||||
"remove"
|
}
|
||||||
],
|
},
|
||||||
|
|
||||||
|
|
||||||
"call_log": [
|
"call_log": {
|
||||||
"unserialize"
|
"unserialize": {
|
||||||
],
|
"description": "Recupere le contenu d'un fichier XML de journal d'appel.",
|
||||||
|
"parameters": {
|
||||||
|
"filecontent": { "description": "Contenu du fichier XML", "type": "text" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
"charts": [
|
"charts": {
|
||||||
"network_data",
|
|
||||||
"network_render"
|
|
||||||
],
|
|
||||||
|
|
||||||
"token" :[
|
"network_data": {
|
||||||
"remove",
|
"description": "Renvoie un jeu de donnees fictif pour un graphique de type #network.",
|
||||||
"generate"
|
"parameters": {}
|
||||||
]
|
},
|
||||||
|
|
||||||
|
"network_render": {
|
||||||
|
"description": "Renvoie le contenu du svg representant un graphique de type #network avec les donnees recues.",
|
||||||
|
"parameters": {
|
||||||
|
"dataset": { "description": "Dataset au bon format pour un graphique de type #network." }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"token": {
|
||||||
|
|
||||||
|
|
||||||
|
"remove": {
|
||||||
|
"description": "Suppression d'un token d'id donne.",
|
||||||
|
"parameters": {
|
||||||
|
"token_id": { "description": "UID du token a supprimer", "type": "id" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
"generate": {
|
||||||
|
"description": "Creation d'un token de nom et de duree donnee",
|
||||||
|
"parameters": {
|
||||||
|
"name": { "description": "Nom attribue au token", "type": "varchar(50)" },
|
||||||
|
"duration": { "description": "Duree du token en nombre de jours", "type": "int" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -73,10 +73,10 @@ APIClass.prototype = {
|
||||||
|
|
||||||
// on créé un formulaire POST (virtuel)
|
// on créé un formulaire POST (virtuel)
|
||||||
var form = new FormData();
|
var form = new FormData();
|
||||||
form.append('path', pRequest.path ); // on créé la variable $_POST['json']=>request
|
|
||||||
|
|
||||||
if( pRequest.hasOwnProperty('data') )
|
// On ajoute tous les attributs en POST
|
||||||
form.append('data', JSON.stringify(pRequest.data) );
|
for( var key in pRequest )
|
||||||
|
form.append(key, pRequest[key]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace manager;
|
namespace manager;
|
||||||
|
use \manager\Database;
|
||||||
|
|
||||||
// FORMAT:
|
// FORMAT:
|
||||||
//
|
//
|
||||||
|
@ -21,7 +22,7 @@
|
||||||
|
|
||||||
// Attributs prives utiles (initialisation)
|
// Attributs prives utiles (initialisation)
|
||||||
private $path;
|
private $path;
|
||||||
private $data;
|
private $params;
|
||||||
private $modules;
|
private $modules;
|
||||||
|
|
||||||
// Contiendra la reponse a la requete
|
// Contiendra la reponse a la requete
|
||||||
|
@ -37,12 +38,12 @@
|
||||||
/* CONSTRUCTEUR D'UNE REQUETE DE MODULE
|
/* CONSTRUCTEUR D'UNE REQUETE DE MODULE
|
||||||
*
|
*
|
||||||
* @path<String> Chemin de delegation ("module/methode")
|
* @path<String> Chemin de delegation ("module/methode")
|
||||||
* @data<Array> Tableau contenant les parametres utiles au traitement
|
* @param<Array> Tableau associatif contenant les parametres utiles au traitement
|
||||||
*
|
*
|
||||||
* @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 function __construct($path=null, $data=null){
|
public function __construct($path=null, $params=null){
|
||||||
// Si pas parametre manquant, on quitte
|
// Si pas parametre manquant, on quitte
|
||||||
if( $path == null ){
|
if( $path == null ){
|
||||||
$this->error = ManagerError::MissingPath;
|
$this->error = ManagerError::MissingPath;
|
||||||
|
@ -71,19 +72,24 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// Type de @data (optionnel)
|
// Type de @data (optionnel)
|
||||||
$data = (is_array($data)) ? $data : array();
|
$params = (is_array($params)) ? $params : array();
|
||||||
|
|
||||||
|
|
||||||
/* [2] Verification du chemin (existence module+methode)
|
/* [2] 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;
|
||||||
// Gestion d'erreur interne
|
|
||||||
|
|
||||||
|
/* [3] Verification des parametres (si @type est defini)
|
||||||
/* [3] Construction de l'objet
|
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$this->data = $data;
|
if( !$this->checkParams($params) ){ // Verification de tous les types
|
||||||
|
$this->error = ManagerError::ParamError;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* [4] Construction de l'objet
|
||||||
|
=========================================================*/
|
||||||
|
$this->params = $params;
|
||||||
$this->error = ManagerError::Success;
|
$this->error = ManagerError::Success;
|
||||||
|
|
||||||
return true; // On retourne que tout s'est bien passe
|
return true; // On retourne que tout s'est bien passe
|
||||||
|
@ -114,7 +120,7 @@
|
||||||
|
|
||||||
/* [3] On amorce la methode
|
/* [3] On amorce la methode
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$returned = call_user_func_array( $this->getFunctionCaller(), $this->data );
|
$returned = call_user_func_array( $this->getFunctionCaller(), $this->params );
|
||||||
|
|
||||||
|
|
||||||
/* [4] Gestion de la reponse
|
/* [4] Gestion de la reponse
|
||||||
|
@ -148,10 +154,12 @@
|
||||||
if( !isset($json['path']) )
|
if( !isset($json['path']) )
|
||||||
return new ModuleRequest();
|
return new ModuleRequest();
|
||||||
|
|
||||||
// On definit $data au cas ou il soit vide
|
// On definit $params au cas ou il soit vide
|
||||||
$data = (isset($json['data'])) ? $json['data'] : array();
|
$params = $json;
|
||||||
|
// On retire le @path de @params
|
||||||
|
unset($params['path']);
|
||||||
|
|
||||||
return new ModuleRequest($json['path'], $data);
|
return new ModuleRequest($json['path'], $params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -194,18 +202,13 @@
|
||||||
/* [2] On verifie que @data est renseigne
|
/* [2] On verifie que @data est renseigne
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
// Si variable n'existe pas, on cree un tableau vide
|
// Si variable n'existe pas, on cree un tableau vide
|
||||||
$data = (isset($post['data'])) ? $post['data'] : array();
|
$params = $post;
|
||||||
|
// On retire le @path de @params
|
||||||
// Si c'est toujours pas un tableau, on essaie de voir si c'est un json
|
unset($params['path']);
|
||||||
$data = (!is_array($data)) ? json_decode($data, true) : $data;
|
|
||||||
|
|
||||||
// Si toujours pas de tableau, on cree un tableau vide
|
|
||||||
$data = (!is_array($data)) ? array() : $data;
|
|
||||||
|
|
||||||
|
|
||||||
/* [3] On retourne une instance de <ModuleRequest>
|
/* [3] On retourne une instance de <ModuleRequest>
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
return new ModuleRequest($post['path'], $data);
|
return new ModuleRequest($post['path'], $params);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,7 +245,7 @@
|
||||||
|
|
||||||
/* [3] Verification de l'existence de la methode (conf)
|
/* [3] Verification de l'existence de la methode (conf)
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
if( array_search($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 = ManagerError::UnknownMethod;
|
$this->error = ManagerError::UnknownMethod;
|
||||||
return false; // On retourne FALSE, si erreur
|
return false; // On retourne FALSE, si erreur
|
||||||
}
|
}
|
||||||
|
@ -262,6 +265,47 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* VERIFICATION DU TYPE DES PARAMETRES ENVOYES
|
||||||
|
*
|
||||||
|
* @params<Array> Tableau associatif contenant les parametres
|
||||||
|
*
|
||||||
|
* @return correct<bool> Retourne si oui ou non les parametres ont le bon type
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private function checkParams($params){
|
||||||
|
/* [1] On verifie qu'il ne manque aucun parametre
|
||||||
|
=========================================================*/
|
||||||
|
// Si @params n'est pas un tableau
|
||||||
|
if( !is_array($params) ) return false;
|
||||||
|
|
||||||
|
$method = $this->modules[$this->path['module']][$this->path['method']];
|
||||||
|
|
||||||
|
// Si le nombre de parametre en entree et requis est different
|
||||||
|
if( count($method['parameters']) > count($params) ) return false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] Si le type est defini, pour chaque param, on teste
|
||||||
|
=========================================================*/
|
||||||
|
foreach($method['parameters'] as $name=>$paramsdata){
|
||||||
|
// Si le parametre n'existe pas dans le tableau recu
|
||||||
|
if( !isset($params[$name]) ) return false;
|
||||||
|
|
||||||
|
// Si le type n'est pas defini, on reboucle
|
||||||
|
if( !isset($paramsdata['type']) ) continue;
|
||||||
|
|
||||||
|
// Si la verification est fausse, on retourne faux
|
||||||
|
if( !Database::check($paramsdata['type'], $params[$name]) ) return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* [3] Gestion du retour, si tout s'est bien passe
|
||||||
|
=========================================================*/
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* RENVOI LE CHEMIN D'AMORCAGE DE LA METHODE
|
/* RENVOI LE CHEMIN D'AMORCAGE DE LA METHODE
|
||||||
*
|
*
|
||||||
|
|
|
@ -35,7 +35,8 @@ var TOKEN = {
|
||||||
// On redige la requete
|
// On redige la requete
|
||||||
var request = { // on ecrit la requete
|
var request = { // on ecrit la requete
|
||||||
'path': 'token/generate',
|
'path': 'token/generate',
|
||||||
'data': [TOKEN.add.name.value, TOKEN.add.duration.value]
|
'name': TOKEN.add.name.value,
|
||||||
|
'duration': TOKEN.add.duration.value
|
||||||
};
|
};
|
||||||
|
|
||||||
// On lance la requete
|
// On lance la requete
|
||||||
|
@ -67,7 +68,7 @@ for( var i = 0 ; i < TOKEN.remove.buttons.length ; i++ ){
|
||||||
/* (2.2) On lance la suppression */
|
/* (2.2) On lance la suppression */
|
||||||
var request = { // on ecrit la requete
|
var request = { // on ecrit la requete
|
||||||
'path': 'token/remove',
|
'path': 'token/remove',
|
||||||
'data': [token_id]
|
'token_id': token_id
|
||||||
};
|
};
|
||||||
|
|
||||||
// On lance la requete
|
// On lance la requete
|
||||||
|
|
Loading…
Reference in New Issue