Gestion des droits pour l'API et les modules
This commit is contained in:
parent
f00cdc67f7
commit
5871cf1591
|
@ -2,11 +2,18 @@
|
||||||
|
|
||||||
"users": {
|
"users": {
|
||||||
"login": {
|
"login": {
|
||||||
"description": "Test de connexion avec un login (identifiant ou adresse mail) et un mot de passe.",
|
"description": "Connexion avec un login (identifiant ou adresse mail) et un mot de passe.",
|
||||||
|
"permissions": [],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"login": { "description": "Identifiant ou adresse mail", "type": "varchar(255)" },
|
"login": { "description": "Identifiant ou adresse mail", "type": "varchar(255)" },
|
||||||
"password": { "description": "Mot de passe", "type":"text" }
|
"password": { "description": "Mot de passe", "type":"text" }
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"logout": {
|
||||||
|
"description": "Deconnexion",
|
||||||
|
"permissions": [],
|
||||||
|
"parameters": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -14,6 +21,7 @@
|
||||||
"call_log": {
|
"call_log": {
|
||||||
"unserialize": {
|
"unserialize": {
|
||||||
"description": "Recupere le contenu d'un fichier XML de journal d'appel.",
|
"description": "Recupere le contenu d'un fichier XML de journal d'appel.",
|
||||||
|
"permissions": ["admin"],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"filecontent": { "description": "Contenu du fichier XML", "type": "text" }
|
"filecontent": { "description": "Contenu du fichier XML", "type": "text" }
|
||||||
}
|
}
|
||||||
|
@ -24,11 +32,13 @@
|
||||||
|
|
||||||
"network_data": {
|
"network_data": {
|
||||||
"description": "Renvoie un jeu de donnees fictif pour un graphique de type #network.",
|
"description": "Renvoie un jeu de donnees fictif pour un graphique de type #network.",
|
||||||
|
"permissions": ["admin"],
|
||||||
"parameters": {}
|
"parameters": {}
|
||||||
},
|
},
|
||||||
|
|
||||||
"network_render": {
|
"network_render": {
|
||||||
"description": "Renvoie le contenu du svg representant un graphique de type #network avec les donnees recues.",
|
"description": "Renvoie le contenu du svg representant un graphique de type #network avec les donnees recues.",
|
||||||
|
"permissions": ["admin"],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"dataset": { "description": "Dataset au bon format pour un graphique de type #network." }
|
"dataset": { "description": "Dataset au bon format pour un graphique de type #network." }
|
||||||
}
|
}
|
||||||
|
@ -40,6 +50,7 @@
|
||||||
|
|
||||||
"remove": {
|
"remove": {
|
||||||
"description": "Suppression d'un token d'id donne.",
|
"description": "Suppression d'un token d'id donne.",
|
||||||
|
"permissions": ["admin"],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"token_id": { "description": "UID du token a supprimer", "type": "id" }
|
"token_id": { "description": "UID du token a supprimer", "type": "id" }
|
||||||
}
|
}
|
||||||
|
@ -48,6 +59,7 @@
|
||||||
|
|
||||||
"generate": {
|
"generate": {
|
||||||
"description": "Creation d'un token de nom et de duree donnee",
|
"description": "Creation d'un token de nom et de duree donnee",
|
||||||
|
"permissions": ["admin"],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"name": { "description": "Nom attribue au token", "type": "varchar(50)" },
|
"name": { "description": "Nom attribue au token", "type": "varchar(50)" },
|
||||||
"duration": { "description": "Duree du token en nombre de jours", "type": "numeric" }
|
"duration": { "description": "Duree du token en nombre de jours", "type": "numeric" }
|
||||||
|
|
|
@ -64,6 +64,8 @@
|
||||||
// Token inexistant ou faux
|
// Token inexistant ou faux
|
||||||
const TokenError = 15;
|
const TokenError = 15;
|
||||||
|
|
||||||
|
const PermissionError = 16;
|
||||||
|
|
||||||
|
|
||||||
/* EXPLICITE UN CODE D'ERREUR
|
/* EXPLICITE UN CODE D'ERREUR
|
||||||
*
|
*
|
||||||
|
@ -95,6 +97,7 @@
|
||||||
case self::PDOConnection: return "La connexion avec la base de donnees a echoue"; break;
|
case self::PDOConnection: return "La connexion avec la base de donnees a echoue"; break;
|
||||||
|
|
||||||
case self::TokenError: return "Le token de connection est absent ou errone"; break;
|
case self::TokenError: return "Le token de connection est absent ou errone"; break;
|
||||||
|
case self::PermissionError: return "Vous n'avez pas la permission d'effectuer cette action"; break;
|
||||||
|
|
||||||
// default: return "Erreur inconnue..."; break;
|
// default: return "Erreur inconnue..."; break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,16 +3,6 @@
|
||||||
namespace manager;
|
namespace manager;
|
||||||
use \manager\Database;
|
use \manager\Database;
|
||||||
|
|
||||||
// FORMAT:
|
|
||||||
//
|
|
||||||
// path: "nomModule/nomMethode"
|
|
||||||
// data1: {donnee1}
|
|
||||||
// data2: {donnee2}
|
|
||||||
// ...
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
class ModuleRequest{
|
class ModuleRequest{
|
||||||
|
|
||||||
|
@ -80,14 +70,23 @@
|
||||||
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;
|
||||||
|
|
||||||
/* [3] Verification des parametres (si @type est defini)
|
|
||||||
|
/* [3] Verification des droits
|
||||||
|
=========================================================*/
|
||||||
|
if( !$this->checkPermission() ){ // Si on a pas les droits
|
||||||
|
$this->error = ManagerError::PermissionError;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* [4] 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 = ManagerError::ParamError;
|
$this->error = ManagerError::ParamError;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [4] Construction de l'objet
|
/* [5] Construction de l'objet
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$this->params = $params;
|
$this->params = $params;
|
||||||
$this->error = ManagerError::Success;
|
$this->error = ManagerError::Success;
|
||||||
|
@ -265,6 +264,37 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* RETOURNE SI ON A LA PERMISSION D'EXECUTER CETTE METHODE
|
||||||
|
*
|
||||||
|
* @return permission<bool> Retourne si on a les droits ou pas pour executer cette methode
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private function checkPermission(){
|
||||||
|
// On recupere le nom de la methode
|
||||||
|
$method = $this->modules[$this->path['module']][$this->path['method']];
|
||||||
|
|
||||||
|
// Si aucune permission n'est definie
|
||||||
|
if( !isset($method['permissions']) ) return true;
|
||||||
|
|
||||||
|
// On recupere les permissions
|
||||||
|
$permissions = $method['permissions'];
|
||||||
|
|
||||||
|
// Si aucune permission n'est definie, on laisse l'acces
|
||||||
|
if( count($permissions) == 0 ) return true;
|
||||||
|
|
||||||
|
// On verifie qu'il y a au moins une permission ok
|
||||||
|
foreach($permissions as $permission)
|
||||||
|
if( permission($permission) ) return true;
|
||||||
|
|
||||||
|
// On retourne FAUX si aucun droit n'a ete trouve
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* VERIFICATION DU TYPE DES PARAMETRES ENVOYES
|
/* VERIFICATION DU TYPE DES PARAMETRES ENVOYES
|
||||||
*
|
*
|
||||||
* @params<Array> Tableau associatif contenant les parametres
|
* @params<Array> Tableau associatif contenant les parametres
|
||||||
|
|
|
@ -42,7 +42,20 @@
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* DECONNEXION D'UN UTILISATEUR
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function logout(){
|
||||||
|
$_SESSION['userid'] = null;
|
||||||
|
$_SESSION['username'] = null;
|
||||||
|
$_SESSION['permission'] = array();
|
||||||
|
}
|
||||||
|
|
||||||
// [x] "login",
|
// [x] "login",
|
||||||
|
// [x] "logout",
|
||||||
// [ ] "getById",
|
// [ ] "getById",
|
||||||
// [ ] "getAll",
|
// [ ] "getAll",
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue