Divers bugs.
This commit is contained in:
parent
2b35f7240f
commit
1553b4ed64
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
require_once(dirname(__FILE__) . "/path.php");
|
require_once(dirname(__FILE__) . "/path.php");
|
||||||
|
|
||||||
|
define('CHEMIN_JOKER_MULTI_SEGMENTS', '**');
|
||||||
|
define('CHEMIN_JOKER_SEGMENT', '*');
|
||||||
|
|
||||||
class Chemin {
|
class Chemin {
|
||||||
// Si $chemin est un tableau, chaque segment doit vérifier les invariants de nettoyer_segment.
|
// Si $chemin est un tableau, chaque segment doit vérifier les invariants de nettoyer_segment.
|
||||||
public function __construct($chemin) {
|
public function __construct($chemin) {
|
||||||
|
@ -13,7 +16,8 @@ class Chemin {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function correspond($motif) {
|
public function correspond($motif) {
|
||||||
// motif : liste de segments, pouvant être un chaîne ou un jocker
|
$motif = $motif->segments;
|
||||||
|
// motif : liste de segments pouvant être un chaîne ou un jocker
|
||||||
// correspondant à "n'importe quelle chaîne pour ce segment". Le
|
// correspondant à "n'importe quelle chaîne pour ce segment". Le
|
||||||
// dernier segment peut être le joker "n'importe quelle suite de
|
// dernier segment peut être le joker "n'importe quelle suite de
|
||||||
// segments (le motif doit donc correspondre à un préfixe du chemin
|
// segments (le motif doit donc correspondre à un préfixe du chemin
|
||||||
|
|
|
@ -17,7 +17,8 @@ class CMS {
|
||||||
$chemin = new Chemin($chemin_str);
|
$chemin = new Chemin($chemin_str);
|
||||||
$noms_params = Modules::get_liste_paramètres($chemin);
|
$noms_params = Modules::get_liste_paramètres($chemin);
|
||||||
$noms_params[] = "action";
|
$noms_params[] = "action";
|
||||||
// récupérer $noms_params dans $_GET, $_POST et $_FILE
|
$paramètres = array();
|
||||||
|
// récupérer $noms_params dans $_GET, $_POST et $_FILE ==> $paramètres
|
||||||
$action = $paramètres["action"];
|
$action = $paramètres["action"];
|
||||||
Modules::action($chemin, $action, $paramètres);
|
Modules::action($chemin, $action, $paramètres);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,9 +14,10 @@ class Modules {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function get_liste_paramètres($chemin) {
|
public static function get_liste_paramètres($chemin) {
|
||||||
|
$module = self::get_module($chemin);
|
||||||
|
if ($module === false) return false;
|
||||||
// TODO
|
// TODO
|
||||||
call_user_func(array(self::get_module($chemin), "get_liste_paramètres"));
|
return call_user_func(array($module, "get_liste_paramètres"));;
|
||||||
return ;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,9 @@ class Permissions {
|
||||||
// sinon on renvoie false
|
// sinon on renvoie false
|
||||||
|
|
||||||
foreach (self::get_regles() as $r) {
|
foreach (self::get_regles() as $r) {
|
||||||
if ($chemin->correspond($r["chemin"])
|
if ( self::chemin_correspond($chemin, $r["chemin"])
|
||||||
&& self::action_correspond($action, $r["action"])
|
&& self::action_correspond($action, $r["action"])
|
||||||
&& $groupe == $r["groupe"]) {
|
&& self::groupe_correspond($groupe, $r["groupe"])) {
|
||||||
return $r["autorisation"];
|
return $r["autorisation"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,22 @@ class Permissions {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function chemin_correspond($chemin, $motif) {
|
||||||
|
$chemin->correspond($motif);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function action_correspond($action, $motif) {
|
||||||
|
if ($motif == '*') return true;
|
||||||
|
if ($action == $motif) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function groupe_correspond($groupe, $motif) {
|
||||||
|
if ($motif == '*') return true;
|
||||||
|
if ($groupe == $motif) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO : d'abord set_nouvelles_regles, puis appliquer_nouvelles_regles.
|
// TODO : d'abord set_nouvelles_regles, puis appliquer_nouvelles_regles.
|
||||||
public function set_regles($regles) {
|
public function set_regles($regles) {
|
||||||
// $regles est un tableau de quadruplets
|
// $regles est un tableau de quadruplets
|
||||||
|
@ -70,7 +86,7 @@ class Permissions {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$regles[] = array(
|
$regles[] = array(
|
||||||
"chemin" => self::unescape_element_regle(new Chemin($r[0])),
|
"chemin" => new Chemin(self::unescape_element_regle($r[0])),
|
||||||
"action" => self::unescape_element_regle($r[1]),
|
"action" => self::unescape_element_regle($r[1]),
|
||||||
"groupe" => self::unescape_element_regle($r[2]),
|
"groupe" => self::unescape_element_regle($r[2]),
|
||||||
"autorisation" => ($r[3] == "oui")
|
"autorisation" => ($r[3] == "oui")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user