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
=========================================================*/
/* (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 */
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é
=========================================================*/
}else if( isset($_SESSION['permission']) )
$local_permissions = $_SESSION['permission'] ? ['admin'] : [];
$local_permissions = $_SESSION['permission'];
// Si ni token, ni SESSION, erreur
else{
@ -408,7 +408,6 @@
return false;
}
/* [4] Verification des droits parmi les permissions donnees
=========================================================*/
/* (1) On recupere la liste des permissions possibles */
@ -417,15 +416,17 @@
/* (2) Si aucune permission n'est definie, on laisse l'acces */
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)
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
=========================================================*/
$this->error = ManagerError::PermissionError;
return false;
return true;
}

View File

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

View File

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

View File

@ -10,6 +10,8 @@
use \api\core\Checker;
use \manager\MenuManager;
// var_dump($_SESSION);
/*******************************************/
/* DEBUGGER */
@ -26,7 +28,7 @@
/* (1) Valeurs par defaut */
if( !isset($_SESSION['userid']) ) $_SESSION['userid'] = 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 */
@ -43,13 +45,19 @@
$login = new ModuleRequest('user/login', [ 'login' => $_POST['login'], 'password' => $_POST['password'] ]);
$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 )
$_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';
}
// var_dump($login_vars);
// var_dump($_SESSION);
// exit();
/* (3) Gestion de le deconnexion */
$logout_vars = isset($_POST['logout-sub']);
@ -62,6 +70,7 @@
// Si aucune erreur, on dit qu'on vient de se deconnecter
if( $logout_ans->error == ManagerError::Success )
$_SESSION['login_status'] = 'unlogged';
}