Divers bugs.

This commit is contained in:
Georges Dupéron 2010-08-02 06:59:11 +02:00
parent 2b35f7240f
commit 1553b4ed64
4 changed files with 30 additions and 8 deletions

View File

@ -2,6 +2,9 @@
require_once(dirname(__FILE__) . "/path.php");
define('CHEMIN_JOKER_MULTI_SEGMENTS', '**');
define('CHEMIN_JOKER_SEGMENT', '*');
class Chemin {
// Si $chemin est un tableau, chaque segment doit vérifier les invariants de nettoyer_segment.
public function __construct($chemin) {
@ -13,7 +16,8 @@ class Chemin {
}
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
// dernier segment peut être le joker "n'importe quelle suite de
// segments (le motif doit donc correspondre à un préfixe du chemin

View File

@ -17,7 +17,8 @@ class CMS {
$chemin = new Chemin($chemin_str);
$noms_params = Modules::get_liste_paramètres($chemin);
$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"];
Modules::action($chemin, $action, $paramètres);
}

View File

@ -14,9 +14,10 @@ class Modules {
}
public static function get_liste_paramètres($chemin) {
$module = self::get_module($chemin);
if ($module === false) return false;
// TODO
call_user_func(array(self::get_module($chemin), "get_liste_paramètres"));
return ;
return call_user_func(array($module, "get_liste_paramètres"));;
}
}

View File

@ -26,9 +26,9 @@ class Permissions {
// sinon on renvoie false
foreach (self::get_regles() as $r) {
if ($chemin->correspond($r["chemin"])
&& self::action_correspond($action, $r["action"])
&& $groupe == $r["groupe"]) {
if ( self::chemin_correspond($chemin, $r["chemin"])
&& self::action_correspond($action, $r["action"])
&& self::groupe_correspond($groupe, $r["groupe"])) {
return $r["autorisation"];
}
}
@ -36,6 +36,22 @@ class Permissions {
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.
public function set_regles($regles) {
// $regles est un tableau de quadruplets
@ -70,7 +86,7 @@ class Permissions {
return false;
}
$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]),
"groupe" => self::unescape_element_regle($r[2]),
"autorisation" => ($r[3] == "oui")