Correction des permissions (`ModuleManager` etc)

This commit is contained in:
xdrm-brackets 2016-10-24 15:47:28 +02:00
parent dc30fbfcca
commit 50d7babcda
5 changed files with 25 additions and 13 deletions

View File

@ -52,10 +52,10 @@
/* [3] Gestion des droits des utilisateurs /* [3] Gestion des droits des utilisateurs
=========================================================*/ =========================================================*/
/* (1) Retourne si l'utilisateur est connecte ou non */ /* (1) Retourne si l'utilisateur est connecte ou non */
function connected(){ return isset($_SESSION['permission']) && $_SESSION['permission']; } function connected(){ return isset($_SESSION['permission']) && count($_SESSION['permission']); }
/* (2) Retourne si l'utilisateur a le status en question */ /* (2) Retourne si l'utilisateur a le status en question */
function permission(){ return connected() && $_SESSION['permission']; } function permission($type){ return connected() && in_array($type, $_SESSION['permission']); }
?> ?>

View File

@ -400,7 +400,7 @@
/* [3] Gestion si aucun token, avec utilisateur connecté /* [3] Gestion si aucun token, avec utilisateur connecté
=========================================================*/ =========================================================*/
}else if( isset($_SESSION['permission']) ) }else if( isset($_SESSION['permission']) )
$local_permissions = $_SESSION['permission'] ? ['admin'] : []; $local_permissions = $_SESSION['permission'];
// Si ni token, ni SESSION, erreur // Si ni token, ni SESSION, erreur
else{ else{
@ -408,7 +408,6 @@
return false; return false;
} }
/* [4] Verification des droits parmi les permissions donnees /* [4] Verification des droits parmi les permissions donnees
=========================================================*/ =========================================================*/
/* (1) On recupere la liste des permissions possibles */ /* (1) On recupere la liste des permissions possibles */
@ -417,15 +416,17 @@
/* (2) Si aucune permission n'est definie, on laisse l'acces */ /* (2) Si aucune permission n'est definie, on laisse l'acces */
if( !$permissions == 0 ) return true; if( !$permissions == 0 ) return true;
/* (3) On verifie qu'il y a au moins une permission ok */ /* (3) On verifie qu'il y a aucune permission manquante */
foreach($permissions as $permission) foreach($permissions as $permission)
if( in_array($permission, $local_permissions) ) return true; if( !in_array($permission, $local_permissions) ){
$this->error = ManagerError::PermissionError;
return false;
}
/* [5] On retourne FAUX si aucun droit n'a ete trouve /* [5] On retourne FAUX si aucun droit n'a ete trouve
=========================================================*/ =========================================================*/
$this->error = ManagerError::PermissionError; return true;
return false;
} }

View File

@ -33,7 +33,7 @@
=========================================================*/ =========================================================*/
$_SESSION['userid'] = $user['id_user']; $_SESSION['userid'] = $user['id_user'];
$_SESSION['username'] = $user['login']; $_SESSION['username'] = $user['login'];
$_SESSION['permission'] = true; $_SESSION['permission'] = ['admin'];
/* [4] Retour de l'id user /* [4] Retour de l'id user
=========================================================*/ =========================================================*/
@ -53,6 +53,8 @@
$_SESSION['userid'] = null; $_SESSION['userid'] = null;
$_SESSION['username'] = null; $_SESSION['username'] = null;
$_SESSION['permission'] = []; $_SESSION['permission'] = [];
return ['ModuleError' => ManagerError::Success];
} }

View File

@ -66,7 +66,7 @@
"logout": { "logout": {
"description": "Deconnexion", "description": "Deconnexion",
"permissions": [], "permissions": ["admin"],
"parameters": {} "parameters": {}
}, },

View File

@ -10,6 +10,8 @@
use \api\core\Checker; use \api\core\Checker;
use \manager\MenuManager; use \manager\MenuManager;
// var_dump($_SESSION);
/*******************************************/ /*******************************************/
/* DEBUGGER */ /* DEBUGGER */
@ -26,7 +28,7 @@
/* (1) Valeurs par defaut */ /* (1) Valeurs par defaut */
if( !isset($_SESSION['userid']) ) $_SESSION['userid'] = null; if( !isset($_SESSION['userid']) ) $_SESSION['userid'] = null;
if( !isset($_SESSION['username']) ) $_SESSION['username'] = null; if( !isset($_SESSION['username']) ) $_SESSION['username'] = null;
if( !isset($_SESSION['permission']) ) $_SESSION['permission'] = false; if( !isset($_SESSION['permission']) ) $_SESSION['permission'] = [];
/* (2) Gestion de la connection */ /* (2) Gestion de la connection */
@ -43,13 +45,19 @@
$login = new ModuleRequest('user/login', [ 'login' => $_POST['login'], 'password' => $_POST['password'] ]); $login = new ModuleRequest('user/login', [ 'login' => $_POST['login'], 'password' => $_POST['password'] ]);
$login_ans = $login->dispatch(); $login_ans = $login->dispatch();
// Si aucune erreur, on dit qu'on vient de se connecter // Si aucune erreur, on dit qu'on vient de se connecter
if( $login_ans->error == ManagerError::Success ) if( $login_ans->error == ManagerError::Success )
$_SESSION['login_status'] = 'logged'; $_SESSION['login_status'] = 'logged';
else // Si on n'a pas les bonnes donnees
// Si on n'a pas les bonnes donnees
else
$_SESSION['login_status'] = 'error'; $_SESSION['login_status'] = 'error';
} }
// var_dump($login_vars);
// var_dump($_SESSION);
// exit();
/* (3) Gestion de le deconnexion */ /* (3) Gestion de le deconnexion */
$logout_vars = isset($_POST['logout-sub']); $logout_vars = isset($_POST['logout-sub']);
@ -62,6 +70,7 @@
// Si aucune erreur, on dit qu'on vient de se deconnecter // Si aucune erreur, on dit qu'on vient de se deconnecter
if( $logout_ans->error == ManagerError::Success ) if( $logout_ans->error == ManagerError::Success )
$_SESSION['login_status'] = 'unlogged'; $_SESSION['login_status'] = 'unlogged';
} }