Gestion des droits pour l'API et les modules
This commit is contained in:
parent
f00cdc67f7
commit
5871cf1591
|
@ -2,11 +2,18 @@
|
|||
|
||||
"users": {
|
||||
"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": {
|
||||
"login": { "description": "Identifiant ou adresse mail", "type": "varchar(255)" },
|
||||
"password": { "description": "Mot de passe", "type":"text" }
|
||||
}
|
||||
},
|
||||
|
||||
"logout": {
|
||||
"description": "Deconnexion",
|
||||
"permissions": [],
|
||||
"parameters": {}
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -14,6 +21,7 @@
|
|||
"call_log": {
|
||||
"unserialize": {
|
||||
"description": "Recupere le contenu d'un fichier XML de journal d'appel.",
|
||||
"permissions": ["admin"],
|
||||
"parameters": {
|
||||
"filecontent": { "description": "Contenu du fichier XML", "type": "text" }
|
||||
}
|
||||
|
@ -24,11 +32,13 @@
|
|||
|
||||
"network_data": {
|
||||
"description": "Renvoie un jeu de donnees fictif pour un graphique de type #network.",
|
||||
"permissions": ["admin"],
|
||||
"parameters": {}
|
||||
},
|
||||
|
||||
"network_render": {
|
||||
"description": "Renvoie le contenu du svg representant un graphique de type #network avec les donnees recues.",
|
||||
"permissions": ["admin"],
|
||||
"parameters": {
|
||||
"dataset": { "description": "Dataset au bon format pour un graphique de type #network." }
|
||||
}
|
||||
|
@ -40,6 +50,7 @@
|
|||
|
||||
"remove": {
|
||||
"description": "Suppression d'un token d'id donne.",
|
||||
"permissions": ["admin"],
|
||||
"parameters": {
|
||||
"token_id": { "description": "UID du token a supprimer", "type": "id" }
|
||||
}
|
||||
|
@ -48,6 +59,7 @@
|
|||
|
||||
"generate": {
|
||||
"description": "Creation d'un token de nom et de duree donnee",
|
||||
"permissions": ["admin"],
|
||||
"parameters": {
|
||||
"name": { "description": "Nom attribue au token", "type": "varchar(50)" },
|
||||
"duration": { "description": "Duree du token en nombre de jours", "type": "numeric" }
|
||||
|
|
|
@ -64,6 +64,8 @@
|
|||
// Token inexistant ou faux
|
||||
const TokenError = 15;
|
||||
|
||||
const PermissionError = 16;
|
||||
|
||||
|
||||
/* 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::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;
|
||||
}
|
||||
|
|
|
@ -3,16 +3,6 @@
|
|||
namespace manager;
|
||||
use \manager\Database;
|
||||
|
||||
// FORMAT:
|
||||
//
|
||||
// path: "nomModule/nomMethode"
|
||||
// data1: {donnee1}
|
||||
// data2: {donnee2}
|
||||
// ...
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
class ModuleRequest{
|
||||
|
||||
|
@ -80,14 +70,23 @@
|
|||
if( !$this->checkPath($path) ) // Verification de la coherence du chemin + attribution
|
||||
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
|
||||
$this->error = ManagerError::ParamError;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* [4] Construction de l'objet
|
||||
/* [5] Construction de l'objet
|
||||
=========================================================*/
|
||||
$this->params = $params;
|
||||
$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
|
||||
*
|
||||
* @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] "logout",
|
||||
// [ ] "getById",
|
||||
// [ ] "getAll",
|
||||
|
||||
|
|
Loading…
Reference in New Issue